SQLAlchemy简介
SQLAlchemy是Python SQL工具箱和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能和灵活性。SQLAlchemy最著名的是对象关系映射器(ORM),它是提供数据映射器模式的可选组件,在该模式中,可以以开放式,多种方式将类映射到数据库-允许对象模型和数据库模式以从一开始就完全脱钩。
-
安装(SQLAlchemy1.4版本)
>>> import sqlalchemy
>>> sqlalchemy.__version__
1.4.0
-
连接数据库
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:', echo=True)
-
声明映射(声明性基类declarative_base)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
-
映射对应表
class User(Base):
# 对应数据库关联表
__tablename__ = 'users'
# 字段, 数据类型,[主键自增]
id = Column(Integer, primary_key=True)
name = Column(String(50))
fullname = Column(String(50))
nickname = Column(String(50))
# 以便我们的示例显示格式良好的 User 对象(可选择性显示)
def __repr__(self):
return "<User(name='%s', fullname='%s', nickname='%s')>" % (
self.name, self.fullname, self.nickname)
-
通过映射声明类的table属性查看关于映射表的信息
>>> 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)说明我们这个users表在数据库不存在,还没有创建
-
一句话创建表结构
>>> 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
-
检查我们创建的映射是否正确
>>> ed_user = User(name='ed', fullname='Ed Jones', nickname='edsnickname')
>>> ed_user.name
'ed'
>>> ed_user.nickname
'edsnickname'
>>> str(ed_user.id)
'None'
-
创建会话(session)
# 方法一
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
# 方法二(如果您的应用程序还没有 Engine 定义模块级对象时)
from sqlalchemy.orm import sessionmaker
Session = sessionmaker()
Session.configure(bind=engine)
#当使用时实例化对象调用
session = Session()
-
后续:
利用 SQLAlchemy-ORM 进行数据的增删改查
更多知识请参考SQLAlchemy 1.4文档