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版本而且版本相差較大的,在語法上會有不同的區別。
相關文章
- 資料持久化,好高階~哎,資料庫啊!!持久化資料庫
- ubuntu下python通過sqlalchemy庫訪問oracle資料庫UbuntuPythonSQLOracle資料庫
- Redis資料持久化—RDB持久化與AOF持久化Redis持久化
- Python庫之SQLAlchemyPythonSQL
- python的ORM技術:使用sqlalchemy操作mysql資料庫PythonORMMySql資料庫
- Redis——Redis用作資料庫(持久化/RDB/AOF)Redis資料庫持久化
- Quzrtz.net-sqlite 資料庫持久化配置SQLite資料庫持久化
- 使用Hector和Scala持久化Cassandra資料庫持久化資料庫
- fabric資料持久化持久化
- Redis 資料持久化Redis持久化
- Docker資料持久化Docker持久化
- web 資料持久化Web持久化
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- SQLALchemy操作MySQL關係型資料庫MySql資料庫
- 使用Flasky-SQLAlchemy 管理資料庫FlaskSQL資料庫
- python使用dbm持久字典(python微型資料庫)詳解Python資料庫
- Docker之 資料持久化Docker持久化
- Redis的資料持久化Redis持久化
- Docker最全教程——資料庫容器化之持久儲存資料(十一)Docker資料庫
- 資料的序列化&持久化持久化
- Sqlalchemy 資料模型序列化(轉JSON)SQL模型JSON
- 資料庫持久連線理解資料庫
- iOS資料持久化設計iOS持久化
- 詳解 ZooKeeper 資料持久化持久化
- iOS中的資料持久化iOS持久化
- ActiveMQ 訊息資料持久化MQ持久化
- Kafka實戰-資料持久化Kafka持久化
- redis學習 - 資料持久化Redis持久化
- Python SqlAlchemy動態新增資料表欄位PythonSQL
- 【許曉笛】EOS 資料庫與持久化 API —— 架構資料庫持久化API架構
- 【許曉笛】EOS 資料庫與持久化 API —— 實戰資料庫持久化API
- 大白話說Python+Flask入門(六)Flask SQLAlchemy操作mysql資料庫PythonFlaskMySql資料庫
- 基於Docker部署Oracle、MySQL等資料庫的資料檔案持久化DockerOracleMySql資料庫持久化
- 使用Room持久庫儲存資料OOM
- Redis單機資料庫持久化與過期建刪除Redis資料庫持久化
- Docker --volume-資料持久化Docker持久化
- iOS資料持久化儲存-CoreDataiOS持久化
- 到底什麼是資料持久化持久化