下面是Python SQLAlchemy库的使用方法的完整攻略。
什么是SQLAlchemy
SQLAlchemy是一个用于Python的SQL工具包和ORM框架。它为Python程序员提供了丰富和强大的SQL编程体验,同时支持Python 3和SQL 2003。
安装SQLAlchemy
安装SQLAlchemy可以使用pip命令,具体如下:
pip install sqlalchemy
基本操作
使用 SQLAlchemy,我们需要创建一个新的引擎,并连接到一个数据库。最常用的连接方式是连接到SQLite数据库,代码如下:
from sqlalchemy import create_engine
# 创建一个SQLite引擎
engine = create_engine('sqlite:///example.db')
使用引擎连接到数据库之后,我们需要定义一个映射类来表示数据库中的表格。例如,定义一个User类来表示users表格,代码如下:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
# 定义User类
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
在映射类中,我们使用__tablename__
属性来指定表格名称,然后使用列(Column)定义每一列的名称和数据类型。
定义好映射类之后,我们就可以使用ORM对象来访问数据库了。例如,向users表格中插入一条新数据,代码如下:
from sqlalchemy.orm import sessionmaker
# 创建会话工厂(sessionmaker)
Session = sessionmaker(bind=engine)
session = Session()
# 创建新的用户对象
user = User(name='Tom', age=20)
# 将新用户对象添加到会话中
session.add(user)
# 提交会话
session.commit()
# 关闭会话
session.close()
以上代码中,我们使用会话工厂(sessionmaker)来创建一个会话(session),然后创建一个新的User对象,并将其添加到会话(session)中,最后提交会话以保存数据并关闭会话。
查询数据
查询数据也是经常使用的操作,例如,查找users表格中所有年龄大于18岁的用户,代码如下:
# 查询数据
users = session.query(User).filter(User.age > 18).all()
for user in users:
print(user.name, user.age)
以上代码中,我们使用了query()方法来查询users表格,然后使用filter()方法指定查询条件,最后使用all()方法获取所有符合条件的结果。
示例说明
下面,我们给出两个使用SQLAlchemy库的简单示例。
示例1
示例1演示了如何使用SQLAlchemy库来创建一个MySQL的连接,并执行一条查询语句,获取数据库中表格的信息。
from sqlalchemy import create_engine
# 定义MySQL连接串
dsn = 'mysql+pymysql://root:password@localhost:3306/sample_db?charset=utf8'
# 创建MySQL引擎
engine = create_engine(dsn)
# 读取表格信息
rs = engine.execute('SELECT * FROM information_schema.TABLES')
for row in rs:
print(row)
以上代码中,我们使用了create_engine()方法来创建一个MySQL连接,并执行了一条SELECT语句来查询信息_schema.TABLES表格的内容。
示例2
示例2演示了如何使用SQLAlchemy库来创建一个SQLite的连接,并向表格中插入一条数据,然后查询所有的数据。
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 创建一个SQLite引擎
engine = create_engine('sqlite:///example.db')
# 创建一个会话工厂(Session)
Session = sessionmaker(bind=engine)
session = Session()
# 定义映射类
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# 向表格中插入一条数据,然后查询所有数据
user = User(name='Tom', age=20)
session.add(user)
users = session.query(User).all()
for user in users:
print(user.name, user.age)
session.close()
以上代码中,我们创建了一个SQLite的引擎,然后定义了一个User类来映射users表格。接着创建了一个用户对象(user),并将其添加到会话(session)中。最后查询users表格中的所有数据并输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python SQLAlchemy库的使用方法 - Python技术站