那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Python 輕量級(jí)ORM框架

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-01 11:17 ? 次閱讀

ORM框架使用最廣泛的就是SQLAlchemy和Django自帶的ORM框架,但是SQLAlchemy的語(yǔ)法顯然相對(duì)Django的ORM框架麻煩一點(diǎn)。

而Django本身是一個(gè)web框架,比較重量級(jí),僅僅為了使用Django的ORM框架的功能,而安裝Django有點(diǎn)導(dǎo)致系統(tǒng)臃腫。而peewee這個(gè)框架語(yǔ)法幾乎與Django的ORM框架一致,而又非常輕量。

它的安裝非常簡(jiǎn)單:

pip install peewee

如果你在使用mysql數(shù)據(jù)庫(kù)的過(guò)程中報(bào)出如下錯(cuò)誤:

peewee.ImproperlyConfigured: MySQL driver not installed!

則需要安裝一個(gè)mysql的驅(qū)動(dòng):

pip install pymysql

peewee的whl包是880kB,pymysql的whl包是51KB,非常輕量級(jí)。

peewee的官方文檔地址:http://docs.peewee-orm.com/en/latest/index.html

下面測(cè)試一下各項(xiàng)功能:

from peewee import *

db = MySQLDatabase('test', host="localhost", user='root', passwd='123456', port=3306)


# 定義Person
class Person(Model):
    name = CharField()
    birthday = DateField()
    is_relative = BooleanField()

    class Meta:
        database = db
        
def test_create():
    Person.create_table()
    # 創(chuàng)建多張表也可以這樣
    # database.create_tables([Person])


def test_insert():
    # 添加一條數(shù)據(jù)
    p = Person(name='小華', birthday=date(1996, 12, 20), is_relative=True)
    p.save()


def test_delete():
    # 刪除姓名為perter的數(shù)據(jù)
    Person.delete().where(Person.name == 'perter').execute()
    # 已經(jīng)實(shí)例化的數(shù)據(jù), 使用delete_instance
    p = Person(name='小華', birthday=date(1996, 12, 20), is_relative=False)
    p.id = 1
    p.save()
    p.delete_instance()


def test_update():
    # 已經(jīng)實(shí)例化的數(shù)據(jù),指定了id這個(gè)primary key,則此時(shí)保存就是更新數(shù)據(jù)
    p = Person(name='小華', birthday=date(1996, 12, 20), is_relative=False)
    p.id = 1
    p.save()

    # 更新birthday數(shù)據(jù)
    q = Person.update({Person.birthday: date(1983, 12, 21)}).where(Person.name == '小華')
    q.execute()


def test_query():
    # 查詢(xún)單條數(shù)據(jù)
    p = Person.get(Person.name == '小華')
    print(p.name, p.birthday, p.is_relative)

    # 使用where().get()查詢(xún)
    p = Person.select().where(Person.name == '小華').get()
    print(p.name, p.birthday, p.is_relative)

    # 查詢(xún)多條數(shù)據(jù)
    persons = Person.select().where(Person.is_relative == True)
    for p in persons:
        print(p.name, p.birthday, p.is_relative)

下面測(cè)試一個(gè)各個(gè)方法。

測(cè)試創(chuàng)建表:

if __name__=="__main__":
    Person.create_table()

執(zhí)行完畢,檢查數(shù)據(jù)庫(kù)成功創(chuàng)建下面這張表:

圖片

測(cè)試插入數(shù)據(jù):

if __name__=="__main__":
    p = Person(name='小華', birthday=date(1996, 12, 20), is_relative=True)
    p.save()

執(zhí)行完畢后,表數(shù)據(jù)多了一行:

圖片

測(cè)試查詢(xún)數(shù)據(jù):

if __name__=="__main__":
 p = Person.get(Person.name == '小華')
    print(p.name, p.birthday, p.is_relative)

結(jié)果:

小華 1996-12-20 True

測(cè)試刪除數(shù)據(jù):

if __name__=="__main__":
    Person.delete().where(Person.name == '小華').execute()

執(zhí)行后,數(shù)據(jù)庫(kù)對(duì)應(yīng)的記錄被刪除:

圖片

測(cè)試修改數(shù)據(jù):

if __name__ == "__main__":
    p = Person(name='小新', birthday=date(1995, 6, 20), is_relative=False)
    p.save()
    # 更新birthday數(shù)據(jù)
    q = Person.update({Person.birthday: date(1983, 5, 21)}).where(Person.name == '小新')
    q.execute()

執(zhí)行后:

圖片

測(cè)試批量查詢(xún):

if __name__ == "__main__":
    for i in range(1, 5):
        p = Person(name=f'小張{i}', birthday=date(1995, 6, 20), is_relative=False)
        p.save()
    # 查詢(xún)多條數(shù)據(jù)
    persons = Person.select().where(Person.is_relative == False)
    for p in persons:
        print(p.name, p.birthday, p.is_relative)

執(zhí)行后:

圖片

結(jié)果:

小新 1983-05-21 False
小張1 1995-06-20 False
小張2 1995-06-20 False
小張3 1995-06-20 False
小張4 1995-06-20 False

更多用法可參考官方文檔。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    403

    瀏覽量

    17542
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3846

    瀏覽量

    64685
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    85037
  • Django
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    10412
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一個(gè)面向嵌入式系統(tǒng)的輕量級(jí)框架

    mr-library 是一個(gè)面向嵌入式系統(tǒng)的輕量級(jí)框架,提供統(tǒng)一的底層驅(qū)動(dòng)設(shè)備模型以及基礎(chǔ)服務(wù)功能,具有模塊化設(shè)計(jì)、可配置性和擴(kuò)展性的特點(diǎn), 可幫助開(kāi)發(fā)者快速構(gòu)建嵌入式應(yīng)用程序。
    發(fā)表于 09-01 12:22 ?608次閱讀

    Python爬蟲(chóng)與Web開(kāi)發(fā)庫(kù)盤(pán)點(diǎn)

    類(lèi),如BaseSpider、sitemap爬蟲(chóng)等3.Web框架Django算是Python web框架里重量級(jí)的選手,主要是因?yàn)樗峁┝艘徽臼降慕鉀Q方案,包括緩存、
    發(fā)表于 05-10 15:21

    10個(gè)輕量級(jí)框架

    這些輕量級(jí)框架使用HTML5和CSS3標(biāo)準(zhǔn)來(lái)幫助您快速開(kāi)發(fā)跨平臺(tái)的Web移動(dòng)應(yīng)用和網(wǎng)站。
    發(fā)表于 07-17 08:25

    輕量級(jí)深度學(xué)習(xí)網(wǎng)絡(luò)是什么

    輕量級(jí)深度學(xué)習(xí)網(wǎng)絡(luò)概覽
    發(fā)表于 04-23 14:53

    輕量級(jí)的ui框架如何去制作

    原創(chuàng)分享:自制輕量級(jí)單片機(jī)UI框架框架元素用戶(hù)接口代碼開(kāi)源平時(shí)常看csdn,但是從來(lái)沒(méi)有自己寫(xiě)過(guò)。正好這幾天需要用單片機(jī)做一個(gè)簡(jiǎn)易的ui界面,于是自己寫(xiě)了一個(gè)輕量級(jí)的ui
    發(fā)表于 07-14 07:39

    Dllite_micro (輕量級(jí)的 AI 推理框架

    DLLite-Micro 是一個(gè)輕量級(jí)的 AI 推理框架,可以為 OpenHarmony OS 的輕量設(shè)備和小型設(shè)備提供深度模型的推理能力DLLite-Micro 向開(kāi)發(fā)者提供清晰、易上手的北向接口
    發(fā)表于 08-05 11:40

    如何自制輕量級(jí)單片機(jī)UI框架

    如何自制輕量級(jí)單片機(jī)UI框架
    發(fā)表于 10-14 06:13

    原創(chuàng)分享:自制輕量級(jí)單片機(jī)UI框架

    原創(chuàng)分享:自制輕量級(jí)單片機(jī)UI框架框架元素用戶(hù)接口代碼開(kāi)源平時(shí)常看csdn,但是從來(lái)沒(méi)有自己寫(xiě)過(guò)。正好這幾天需要用單片機(jī)做一個(gè)簡(jiǎn)易的ui界面,于是自己寫(xiě)了一個(gè)輕量級(jí)的ui
    發(fā)表于 11-05 15:20 ?29次下載
    原創(chuàng)分享:自制<b class='flag-5'>輕量級(jí)</b>單片機(jī)UI<b class='flag-5'>框架</b>

    TinyDB輕量級(jí)數(shù)據(jù)庫(kù)有哪些特點(diǎn)呢

    TinyDB 是一個(gè)純 Python 編寫(xiě)的輕量級(jí)數(shù)據(jù)庫(kù),一共只有1800行代碼,沒(méi)有外部依賴(lài)項(xiàng)。
    的頭像 發(fā)表于 10-28 14:07 ?1533次閱讀

    SQLAlchemy 2.0.0正式發(fā)布,Python ORM框架

    SQLAlchemy 是一個(gè) Python 的 SQL 工具包以及數(shù)據(jù)庫(kù)對(duì)象映射 (ORM) 框架。它包含整套企業(yè)級(jí)持久化模式,專(zhuān)門(mén)用于高效和高性能的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)。
    的頭像 發(fā)表于 01-31 14:52 ?507次閱讀

    一個(gè)純Python編寫(xiě)的輕量級(jí)數(shù)據(jù)庫(kù)

    TinyDB 是一個(gè)純 Python 編寫(xiě)的輕量級(jí)數(shù)據(jù)庫(kù),一共只有1800行代碼,沒(méi)有外部依賴(lài)項(xiàng)。
    的頭像 發(fā)表于 02-24 10:32 ?881次閱讀

    測(cè)評(píng)分享 | 如何在先楫HPM6750上運(yùn)行輕量級(jí)AI推理框架TinyMaix

    本期內(nèi)容由先楫開(kāi)發(fā)者社區(qū)大咖@xusiwei1236分享基于先楫HPM6750的輕量級(jí)AI推理框架,趕緊來(lái)瞧瞧~一、TinyMaix是什么?TinyMaix是國(guó)內(nèi)sipeed團(tuán)隊(duì)開(kāi)發(fā)一個(gè)輕量級(jí)AI
    的頭像 發(fā)表于 12-12 17:57 ?1638次閱讀
    測(cè)評(píng)分享 | 如何在先楫HPM6750上運(yùn)行<b class='flag-5'>輕量級(jí)</b>AI推理<b class='flag-5'>框架</b>TinyMaix

    一個(gè)輕量級(jí)的權(quán)限認(rèn)證框架:Sa-Token

    Java有很多優(yōu)秀的權(quán)限認(rèn)證框架,如 Apache Shiro 、 Spring Security 等,但是集成起來(lái)實(shí)在是有些復(fù)雜;今天給大家介紹一個(gè)輕量級(jí)的權(quán)限認(rèn)證框架:Sa-Token,只需引入
    的頭像 發(fā)表于 09-30 16:46 ?2233次閱讀
    一個(gè)<b class='flag-5'>輕量級(jí)</b>的權(quán)限認(rèn)證<b class='flag-5'>框架</b>:Sa-Token

    Mara-pipelines:輕量級(jí)的數(shù)據(jù)轉(zhuǎn)換框架

    Mara-pipelines 是一個(gè)輕量級(jí)的數(shù)據(jù)轉(zhuǎn)換框架,具有透明和低復(fù)雜性的特點(diǎn)。其他特點(diǎn)如下: 基于非常簡(jiǎn)單的Python代碼就能完成流水線(xiàn)開(kāi)發(fā)。 使用 PostgreSQL 作為數(shù)據(jù)處理引擎
    的頭像 發(fā)表于 10-30 10:47 ?660次閱讀
    Mara-pipelines:<b class='flag-5'>輕量級(jí)</b>的數(shù)據(jù)轉(zhuǎn)換<b class='flag-5'>框架</b>

    超級(jí)方便的輕量級(jí)Python流水線(xiàn)工具

    Mara-pipelines 是一個(gè)輕量級(jí)的數(shù)據(jù)轉(zhuǎn)換框架,具有透明和低復(fù)雜性的特點(diǎn)。其他特點(diǎn)如下: 基于非常簡(jiǎn)單的Python代碼就能完成流水線(xiàn)開(kāi)發(fā)。 使用 PostgreSQL 作為數(shù)據(jù)處理引擎
    的頭像 發(fā)表于 10-31 11:26 ?736次閱讀
    超級(jí)方便的<b class='flag-5'>輕量級(jí)</b><b class='flag-5'>Python</b>流水線(xiàn)工具
    赌场百家乐官网攻略| 大发888官方| OG百家乐官网大转轮| 大发888老虎机游戏| 宾利百家乐现金网| 太阳城百家乐官网怎么出千| 998棋牌游戏中心| 366百家乐赌博| 百家乐官网真人斗地主| 信阳市| 百家乐手论坛48491| 虹乐棋牌是真的吗| 百家乐官网获胜秘决百家乐官网获胜秘诀 | 百家乐官网平注常赢法| 大发888casino下载| 尊龙百家乐娱乐网| 赌博百家乐的玩法技巧和规则| 邯郸百家乐官网园怎么样| 红桥区| 欧华娱乐| 大发888网页登录| 爱赢百家乐的玩法技巧和规则 | 澳门百家乐官网大家乐眼| 六合彩开码| 大发888娱乐城打发888打发8| 正品百家乐游戏| 互博百家乐现金网| 大发888博彩| 百家乐轮盘一体机厂家| 属狗与属龙做生意好吗| 庞博百家乐官网的玩法技巧和规则 | 大发888的示例| 电子百家乐打法| 在线百家乐有些一| 百家乐官网平注资讯| 百家乐官网娱乐官网| 百家乐官网赌场现金网| 玉环县| 澳门百家乐官网死局| 绥化市| 百家乐官网平玩法lm0|