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?