衡阳派盒市场营销有限公司

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)工具
    棋牌百家乐有稳赚的方法吗 | 澳门百家乐官网门路| 百家乐全讯网娱乐城| 至尊百家乐官网qvod| 娱乐城开户送| 百家乐大西洋城v| 闲和庄百家乐官网娱乐平台| 大发线上娱乐| 威尼斯人娱乐场积分| 金盈会百家乐现金网| 百家乐官网翻天粤语版| 澳门赌博| 百苑百家乐的玩法技巧和规则| 做生意属虎的朝向| 澳门百家乐官网赢钱公式不倒翁| 博彩一族| 大发888冲值| 怎样玩百家乐的玩法技巧和规则| 真人版百家乐官网试玩| 澳门百家乐官网技巧| 仙游县| 大发888 娱乐| 百家乐加牌规| 百家乐l23| 网上百家乐看牌器| 金赞百家乐官网的玩法技巧和规则| 网上赌百家乐官网正规吗| 最好的网上真人赌博| 大发888集团| 威尼斯人娱乐城优惠| 百家乐图形的秘密破解| 百家乐庄89| 百家乐最新庄闲投注法| 澳门百家乐官网国际娱乐城| 优博国际娱乐城| 吉木萨尔县| 仁怀市| 双城市| 定襄县| 百家乐游戏平台排名| 百家乐什么叫缆|