SQLAlchemy簡(jiǎn)介
SQLAlchemy是Python SQL工具箱和對(duì)象關(guān)系映射器,它為應(yīng)用程序開(kāi)發(fā)人員提供了SQL的全部功能和靈活性刁赦。SQLAlchemy最著名的是對(duì)象關(guān)系映射器(ORM)廓译,它是提供數(shù)據(jù)映射器模式的可選組件眉枕,在該模式中忱嘹,可以以開(kāi)放式衣迷,多種方式將類映射到數(shù)據(jù)庫(kù)-允許對(duì)象模型和數(shù)據(jù)庫(kù)模式以從一開(kāi)始就完全脫鉤。
-
安裝(SQLAlchemy1.4版本)
>>> import sqlalchemy
>>> sqlalchemy.__version__
1.4.0
-
連接數(shù)據(jù)庫(kù)
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
-
聲明映射(聲明性基類declarative_base)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
-
映射對(duì)應(yīng)表
class User(Base):
# 對(duì)應(yīng)數(shù)據(jù)庫(kù)關(guān)聯(lián)表
__tablename__ = 'users'
# 字段, 數(shù)據(jù)類型邮破,[主鍵自增]
id = Column(Integer, primary_key=True)
name = Column(String(50))
fullname = Column(String(50))
nickname = Column(String(50))
# 以便我們的示例顯示格式良好的 User 對(duì)象(可選擇性顯示)
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
-
通過(guò)映射聲明類的table屬性查看關(guān)于映射表的信息
>>> User.__table__
Table('users', MetaData(bind=None),
Column('id', Integer(), table=<users>, primary_key=True, nullable=False),
Column('name', String(50), table=<users>),
Column('fullname', String(50), table=<users>),
Column('nickname', String(50), table=<users>), schema=None)
# MetaData(bind=None)說(shuō)明我們這個(gè)users表在數(shù)據(jù)庫(kù)不存在诈豌,還沒(méi)有創(chuàng)建
-
一句話創(chuàng)建表結(jié)構(gòu)
>>> Base.metadata.create_all(engine)
SELECT ...
PRAGMA table_info("users")
()
CREATE TABLE users (
id INTEGER NOT NULL, name VARCHAR,
fullname VARCHAR,
nickname VARCHAR,
PRIMARY KEY (id)
)
()
COMMIT
-
檢查我們創(chuàng)建的映射是否正確
>>> ed_user = User(name='ed', fullname='Ed Jones', nickname='edsnickname')
>>> ed_user.name
'ed'
>>> ed_user.nickname
'edsnickname'
>>> str(ed_user.id)
'None'
-
創(chuàng)建會(huì)話(session)
# 方法一
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
# 方法二(如果您的應(yīng)用程序還沒(méi)有 Engine 定義模塊級(jí)對(duì)象時(shí))
from sqlalchemy.orm import sessionmaker
Session = sessionmaker()
Session.configure(bind=engine)
#當(dāng)使用時(shí)實(shí)例化對(duì)象調(diào)用
session = Session()
-
后續(xù):
利用 SQLAlchemy-ORM 進(jìn)行數(shù)據(jù)的增刪改查
更多知識(shí)請(qǐng)參考SQLAlchemy 1.4文檔