赞
踩
参考文档 https://www.ctolib.com/topics-96759.html
SQLAlchemy
是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具。对象关系映射 用户使用Python定义的类 与 数据库中的表相关联的一种方式,类的实例则对应数据表中的一行数据,对应关系如下:
SQLAlchemy | SQL |
---|---|
Python定义类 | 数据表 |
类的实例 | 行数据 |
SQLAlchemy包括了一套 将对象中的变化同步到数据库表中 的系统,这套系统被称之为工作单元(unit of work),同时也提供了 使用类查询来实现数据库查询 以及 查询表之间关系 的功能。
检查当前使用的 SQLAlchemy 的版本,可能存在版本不一样结果有偏差的情况,本质上原理基本一致的
In [1]: import sqlalchemy
In [2]: sqlalchemy.__version__
Out[2]: '1.2.1'
# 导入相关数据包 from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine, Column, Integer, String, equence engine = create_engine('sqlite:///test.db', echo=True) Base = declarative_base() class User(Base): __tablename__ = 'user' id = Column(Integer, Sequence('user_id_seq'), primary_key=True) name = Column(String(50)) fullname = Column(String(50)) password = Column(String(12)) def __repr__(self): return "<User(name='%s', fullname='%s', password='%s')>" % (self.name, self.fullname, self.password) Base.metadata.create_all(engine) # 实例化一个对象,并赋值 ed_user = User(name='ed', fullname='Ed Jones', password='edspassword') # 创建会话链接,并关联引擎 Session = sessionmaker(bind=engine) # 创建一个session实例 session = Session() # 将数据添加到seesion中
这篇教程中我们使用sqlite数据库来演示操作,我们使用create_engine()
来连接需要操作的数据库:
# 注意: 这里需要先新建一个 sqlite 的本地数据库文件
# PS C:\Users\Administrator> sqlite3 test.db
In [3]: from sqlalchemy import create_engine
In [4]: engine = create_engine('sqlite:///test.db', echo=True)
echo
参数是用来设置SQLAlchemy日志的,通过Python标准库logging模块实现。设置为True的时候我们可以看见所以的操作记录。如果你在按照本教程进行学习,那么你可以将它设置为False来减少日志的输出。
create_engine()
的返回值是Engine
的一个实例,此实例代表了操作数据库的核心接口,通过方言来处理数据库和数据库的API。在本例中,SQLite方言将被翻译成Python内置的sqlite3模块(个人理解,方言指的是每一种数据库的使用的方言,比方说mysql会有一种,sqlite又会有一种,而每种语言又会有很多在数据库的处理模块,比方说刚刚提到的Python内置的sqlite3模块)。
当第一次调用 Engine.execute()
或者 Engine.connect()
这种方法的时候,引擎(Engine)会和数据库建立一个真正的DBAPI连接,用来执行SQL语句。但是在创建了连接之后,我们很少直接使用Engine来操作数据库,更多的会使用ORM这种方式来操作数据库,这种方式在下面我们会看见具体的例子。
当使用 ORM 的时候,配置过程以描述数据库的表来开始,然后我们定义与之匹配的类。在现在的 SQLAlchemy 中,这两个过程一般结合在一起,通过一个称之为声明(Declarative)的系统实现。这个系统帮我们定义类以及实现与表的对应。
声明系统实现类与表的对应是通过一系列基类实现的—即声明基类(declarative base class)。我们的应用程序经常只有一个此基类的示例。使用declarative_base()
函数,如下:
In [5]: from sqlalchemy.ext.declarative import declarative_base
In [6]: Base = declarative_base()
有了 Base
之后,我们可通过他定义任何数量的映射类。我们以一个 User表
来开始这个教程,User表
记录了用我们应用的终端用户的信息。与之对应的类称之为User
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。