Python SqlAlchemy資料庫持久化使用方法
SqlAlchemy版本:1.1.11
作業系統:Windows
Python:3.5
歡迎加入學習交流QQ群:657341423
資料持久化是常用的開發技術。具體有點請參考百度百科:請點選
Python的資料庫ORM框架是資料持久層框架。這只是其中一種框架,還有其他的框架,請參考
總的來說,在實際開發中,需要不停的對資料庫進行連線和操作,最基本的就是連線資料庫,然後通過sql語句進行增刪改,提交事務,關閉連線。這當然是最入門的做法。效能也是最差的。
這時候就引入了資料持久層的方法。
本文介紹python中最流行的SQLAlchemy框架的使用。
安裝:直接用pip install SQLAlchemy即可
使用方法:
建立連結:
from sqlalchemy import create_engine
engine=create_engine('sqlite:////MyDB.sqlite3',echo=True)
這裡的建立是告訴SQLAlchemy你的資料庫檔案的路徑。這裡sqlite:////MyDB.sqlite3,py檔案和MyDB.sqlite3是同一個目錄下,如果不同目錄,需要寫上路徑。
echo=False(True),在執行py檔案的時候是不顯示(顯示)Sql執行情況。這個可以自己試試。
這裡列出一系列的資料庫連結方式:
例:
mysql://root:pass/test
root是使用者名稱 pass密碼 test資料庫
明確了路徑和相關的資料庫名之後,就是建立會話。也可以理解為sql的遊標
from sqlalchemy.orm import sessionmaker
DBSession = sessionmaker(bind=engine)
session = DBSession()
然後就是建立物件類
from sqlalchemy.ext.declarative import declarative_base
Base=declarative_base()
因為持久化都是將資料庫的欄位轉化成程式碼裡面類的屬性來表示的。
建立表
from sqlalchemy import create_engine,Column,String,Integer
class Mybase(Base):
#表名
__tablename__ ='mycars'
#欄位,屬性
myid=Column(String(50), primary_key=True)
price=Column(String(50))
建立物件之後,但是在資料庫裡面還沒生成該表。可以自定義一個方法:
def CreatDb():
#建立表
Base.metadata.create_all(engine)
def delDb():
#刪除表
Base.metadata.drop_all(engine)
新增資料
dt=Mybase(myid='aaa',price="aaa")
session.add(dt)
session.commit()
修改資料
#根據新增後再修改
dt.price='aaaaa'
#提交資料庫
session.commit()
#查詢符合條件資料再修改,filter_by是一個list,first()表示第一個
ModifyDt=session.query(Mybase).filter_by(myid='asd').first()
#修改資料
ModifyDt.price='ccccc'
#提交資料庫
session.commit()
查詢資料
查詢資料是用filter_by,上一程式碼就是查詢後再修改資料。
如果多條件查詢,使用多次filter_by即可
querydt=session.query(Mybase).filter(Mybase.myid == 'asd').filter(Mybase.price == 'bbbb')
for i in querydt:
print(i.myid)
全部程式碼:
from sqlalchemy import create_engine,Column,String,Integer
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
#建立連結
engine=create_engine('sqlite:////Mydb.sqlite3',echo=False)
#建立會話
DBSession = sessionmaker(bind=engine)
session = DBSession()
Base=declarative_base()
class Mybase(Base):
#表名
__tablename__ ='mycars'
#欄位,屬性
myid=Column(String(50), primary_key=True)
price=Column(String(50))
def CreatDb():
#建立表
Base.metadata.create_all(engine)
def delDb():
#刪除表
Base.metadata.drop_all(engine)
#建立表
CreatDb()
#新增資料
dt=Mybase(myid='aaa',price="aaa")
session.add(dt)
session.commit()
#修改資料
dt.price='aaaaa'
session.commit()
#查詢後修改
ModifyDt=session.query(Mybase).filter_by(myid='asd').first()
ModifyDt.price='bbbb'
session.commit()
#多條件查詢,這裡注意的是filter_by和filter的區別,filter可以多表查詢。比較運算子也不一樣。filter必需帶表名
querydt=session.query(Mybase).filter(Mybase.myid == 'asd').filter(Mybase.price == 'bbbb')
for i in querydt:
print(i.myid)
運算結果:
此外還有很多資料庫操作。這個可以參考官方文件:請點選
注意:不同SqlAlchemy版本而且版本相差較大的,在語法上會有不同的區別。
相關文章
- Python庫之SQLAlchemyPythonSQL
- python的ORM技術:使用sqlalchemy操作mysql資料庫PythonORMMySql資料庫
- Redis資料持久化—RDB持久化與AOF持久化Redis持久化
- Redis——Redis用作資料庫(持久化/RDB/AOF)Redis資料庫持久化
- SQLALchemy操作MySQL關係型資料庫MySql資料庫
- fabric資料持久化持久化
- Docker資料持久化Docker持久化
- Redis 資料持久化Redis持久化
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- Docker最全教程——資料庫容器化之持久儲存資料(十一)Docker資料庫
- Sqlalchemy 資料模型序列化(轉JSON)SQL模型JSON
- 大白話說Python+Flask入門(六)Flask SQLAlchemy操作mysql資料庫PythonFlaskMySql資料庫
- Docker之 資料持久化Docker持久化
- 【Unity】資料持久化PlayerPrefsUnity持久化
- Redis的資料持久化Redis持久化
- 資料的序列化&持久化持久化
- 【許曉笛】EOS 資料庫與持久化 API —— 架構資料庫持久化API架構
- 【許曉笛】EOS 資料庫與持久化 API —— 實戰資料庫持久化API
- 基於Docker部署Oracle、MySQL等資料庫的資料檔案持久化DockerOracleMySql資料庫持久化
- iOS資料持久化設計iOS持久化
- 鴻蒙資料持久化sqlite鴻蒙持久化SQLite
- 可持久化資料結構持久化資料結構
- Docker --volume-資料持久化Docker持久化
- 詳解 ZooKeeper 資料持久化持久化
- Redis單機資料庫持久化與過期建刪除Redis資料庫持久化
- SQLAlchemy - 資料庫的連線、建立會話與模型SQL資料庫會話模型
- SDB :純 golang 開發、資料結構豐富、持久化的 NoSQL 資料庫Golang資料結構持久化SQL資料庫
- Python資料視覺化matplotlib庫Python視覺化
- Python SQLALchemy框架PythonSQL框架
- 可持久化資料結構1持久化資料結構
- iOS資料持久化儲存-CoreDataiOS持久化
- Milvus 2.0 資料插入與持久化持久化
- Kubernetes 持久化資料儲存 StorageClass持久化
- flutter 持久化儲存-----資料庫sqflite|8月更文挑戰Flutter持久化資料庫
- HarmonyOS資料管理與應用資料持久化(一)持久化
- Python-SQLAlchemy:第1節:SQLAlchemy入門PythonSQL
- 全棧 – 11 資料庫 MySQL使用方法全棧資料庫MySql
- 在ai studio中“持久化”修改python庫檔案的方法AI持久化Python
- 鴻蒙首選項資料持久化鴻蒙持久化