91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python的ORM框架sqlalchemy如何使用

發布時間:2022-03-29 16:46:33 來源:億速云 閱讀:149 作者:iii 欄目:移動開發

這篇文章主要介紹“Python的ORM框架sqlalchemy如何使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python的ORM框架sqlalchemy如何使用”文章能幫助大家解決問題。

安裝

1、安裝

#進入虛擬環境
#執行
./python3 -m pip install

import sqlalchemy
print(sqlalchemy.__version__) # 1.1.15
我這里使用的版本是1.1.15

創建連接對象

from sqlalchemy import create_engine
# 連接本地test數據庫
engine = create_engine("mysql://root:root@localhost/test?charset=utf8")

運行時會出錯,因為需要驅動庫,默認會調用MySQLdb。

ImportError: No module named "MySQLdb"

我們前面安裝了pymysql,因此完整的要這么寫:

engine = create_engine("mysql+pymysql://root:root@localhost/test?charset=utf8")

簡單使用

SQL語句查詢

result = engine.execute("select * from news")
print(result.fetchall())
#[(1, "本機新聞標題"), (2, "今天的新聞"), (3, "新聞標題1"), (4, "新聞標題2"), (5, "元組新聞1"), (6, "元組新聞2")]

創建映射

既然我們用ORM,就是為了少寫甚至不寫SQL語句。

ORM是數據表和對象之間的映射。

1、創建一個Infos.py文件,這個文件我們來做數據表的映射

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
from sqlalchemy import Column, Integer, String
class News(Base):
# 表名稱
__tablename__ = "news"
# news表里id字段
id = Column(Integer, primary_key=True, autoincrement=True)
# news表里title字段
title = Column(String(length=255), nullable=False)

News類就是我們數據表news的映射(字段:id、title)。

2、使用

from sqlalchemy import create_engine
from mappers.Infos import News
from sqlalchemy.orm import sessionmaker
# 連接本地test數據庫
engine = create_engine("mysql+pymysql://root:root@localhost/test?charset=utf8")
# 創建會話
session = sessionmaker(engine)
mySession = session()
# 查詢結果集
result = mySession.query(News).all()
print(result[0])

我們要注意最后的查詢結果,看看結果集中的元素長什么樣?^_^

<mappers.Infos.News object at 0x1050c6e80>

查詢處理的記錄都是對象。

各種查詢

只查詢第一條記錄

# 查詢第一條
result = mySession.query(News).first()
print(result.title) #打印對象屬性
通過id字段查詢

# 查詢id為2的
result = mySession.query(News).filter_by(id=2).first()
print(result.title)
# 查詢id為2的
result = mySession.query(News).filter(News.id==2).first()
分頁查詢

# 分頁查詢 0,2
result = mySession.query(News).filter(News.id>1).limit(2).offset(0).all()
print(result)
自定義過濾條件

# 自定義過濾條件
result = mySession.query(News).filter(text("id>:id")).params(id=2).all()

根據主鍵查詢

result = mySession.query(News).get(3)
print(result.title)

新增和修改

# 新增
news = News(title="新增測試標題")
mySession.add(news)
mySession.commit()
#修改
mySession.query(News).filter(News.id==7).update({"title":"修改之后的標題"})
mySession.commit()

Python利用sqlacodegen自動生成ORM實體類示例

前面方法我們是手動創建了一個名叫Infos.py的文件,然后定義了一個News類,把這個類作為和我們news數據表的映射。

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
from sqlalchemy import Column, Integer, String
class News(Base):
# 表名稱
__tablename__ = "news"
# news表里id字段
id = Column(Integer, primary_key=True, autoincrement=True)
# news表里title字段
title = Column(String(length=255), nullable=False)

現在我們來看看sqlacodegen這個工具,自動生成像上面那樣的類文件。

1、安裝sqlacodegen

#cd 項目虛擬環境
#執行
./python3 -m pip install sqlacodegen

2、使用sqlacodegen生成案列

#注意還是在虛擬環境目錄下執行
./sqlacodegen --tables fund --outfile ../../mappers/Found.py mysql+pymysql://root:root@localhost/test?charset=utf8

關于“Python的ORM框架sqlalchemy如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高淳县| 闻喜县| 肥西县| 泸西县| 台中县| 榆林市| 南安市| 凉城县| 吴川市| 怀宁县| 六枝特区| 舞钢市| 买车| 武夷山市| 铜川市| 扶余县| 黎城县| 济源市| 兴安县| 新河县| 平陆县| 泽州县| 嘉祥县| 浮梁县| 遂昌县| 潢川县| 夏邑县| 柘荣县| 东乌珠穆沁旗| 大城县| 宽城| 汉寿县| 来安县| 镇宁| 广南县| 黄石市| 西丰县| 子洲县| 分宜县| 桃园县| 富顺县|