SQLAlchemy
1、介绍
企业级ORM框架,学习周期长,功能齐全
2、基本概念
Session的主要目的是建立与数据库的对话,它维护你加载和关联的所有数据库对象,是数据库查询(Query)的一个入口
数据库中的查询操作是通过Query对象实现的,而Session提供了创建Query对象的接口。Query对象会返回一组同一映射(Identity Map)对象组成的集合。集合中的一个对象,对应于数据库表中的一行。
同一映射:每个对象有一个唯一的ID,如果两个对象的ID相同,则认为他们是相同的对象。Engine对象用来建立与数据库的连接,一个Engine对象可能是关联一个Session对象,也可能关联一个数据库表。
3、基本操作
3.1 连接数据库
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:password@localhost:3306/test_1')
print(engine)3.2 创建类
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
# 表的名称
__tablename__ = 'users'
# 列的名称及数据类型
id = Column(Integer, primary_key=True)
username = Column(String(64), nullable=False, index=True)
password = Column(String(64), nullable=False)
email = Column(String(64), nullable=False, index=True)
def __repr__(self):
return "<User(id='%s', fullname='%s', password='%s', email='%s')>" % (self.id, self.username, self.password, self.email)3.3 创建表
3.4 创建session
数据库设计的难点之一,是session声明周期的管理问题。
这是说怕出现同一个session对象在不同的程序中同一时间被执行了不同的操作而导致问题吗?
在sqlalchemy中提供了一个简单session管理机制,那就是scoped session。它采用注册模式(单例模式?),也就是说,在整个程序运行过程中,只存在一个唯一的session对象。
所以下面的两个session对象都是同一个对象引用
Last updated
Was this helpful?