下面给出详细的Python的ORM框架SQLAlchemy入门教程:
1. 什么是SQLAlchemy
SQLAlchemy是一个Python编程语言下的SQL工具和对象关系映射(ORM)库。它提供了一组介于底层SQL之上的高级抽象,使您可以在Python中轻松地执行常见的数据库操作。您可以使用它来连接到各种数据库管理系统,如:SQLite、 MySQL、Oracle、PostgreSQL和Microsoft SQL Server等,以及其他多种数据库。这里我们将以MySQL数据库为例进行演示说明。
安装SQLAlchemy
在Python中使用SQLAlchemy库,您需要安装SQLAlchemy和驱动程序。在这里我们使用MySQL数据库,所以我们需要安装MySQLdb库。下面是安装步骤:
pip install sqlalchemy
pip install mysqlclient
2. 创建连接
在使用SQLAlchemy之前,我们需要先创建一个数据库连接。下面是连接MySQL数据库的代码示例:
from sqlalchemy import create_engine
# 创建一个引擎(Engine)
engine = create_engine("mysql://username:password@host/dbname?charset=utf8")
解释一下代码:我们首先调用 create_engine() 这个函数,该函数的第一个参数是用于连接到数据库的字符串。格式为: dialect+driver://username:password@host:port/database?charset=utf8
其中:
dialect
: 数据库类型,在这里我们使用"mysql"driver
: 数据库驱动程序,在这里使用 "pymysql"username
: 连接数据库的用户名password
: 连接数据库的密码host
: 数据库主机地址port
: 数据库端口号,默认值为3306database
: 数据库名称charset
: 连接数据库的编码,默认为"utf8"
3. 建立映射模型
使用SQLAlchemy,您可以通过简单的Python类来映射数据库中的表。这被称为对象关系映射(ORM)。我们将使用ORM模式,将数据库表映射到Python类以及将数据记录映射到对象。
下面是一个 Python类,表示数据库中的 users 表:
from sqlalchemy import Column, String, Integer
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))
age = Column(Integer)
email = Column(String(50))
这里,我们创建了一个User类,该类继承自 SQLAlchemy 的 Base 类,并设置 __tablename__ = 'users'
表示与数据库中的 users 表对应。可以看到我们定义了一个 id 字段,该字段为 Integer 类型,为该表的主键, name, age, email 字段均为String类型,用于存储用户名、年龄和电子邮件等信息。
4. 创建表
接下来,我们需要使用ORM模型中的 create_all() 函数来创建表。此函数可以自动扫描所有继承 SQLAlchemy Base 类的类,并根据类定义创建相应的数据库表。
Base.metadata.create_all(engine)
5. 增加记录
来到了SQLAlchemy的第一步骤,最基本的ORM操作之一:插入记录。
from sqlalchemy.orm import Session
session = Session(bind=engine)
new_user = User(name='Lucy', age=26, email='lucy@example.com')
session.add(new_user)
session.commit()
首先,我们需要创建一个 session 对象,这个对象就像一个本地事务,负责处理整个数据插入过程。如果想要插入数据,需要创建一个新的 Python 对象来表示该数据。在这里我们定义了一个新的用户对象,然后将其添加到会话中。最后,我们调用了 commit() 函数来将数据写入数据库。
6. 查询记录
接下来,我们来学习一下如何从数据库中查询数据。在此之前,我们需要先插入一些数据。
session = Session(bind=engine)
# 查询所有用户
users = session.query(User).all()
print(users)
# 查询年龄大于等于25的用户
users = session.query(User).filter(User.age >= 25).all()
print(users)
在这里,我们首先通过 session.query(User).all()
来查询所有用户的记录,然后通过 session.query(User).filter(User.age >= 25).all()
来查询年龄大于等于25的所有用户的记录。
7. 删除记录
为了删除数据库中的数据,我们需要首先查询到该记录并将其传递给 remove() 函数,然后调用 commit() 函数来执行真正的删除操作。
session = Session(bind=engine)
# 查询 id 为1的用户
user = session.query(User).filter_by(id=1).first()
# 删除用户
session.delete(user)
# 提交删除操作
session.commit()
在这里,我们首先查询 id 为1的用户,然后通过 session.delete(user)
来删除该用户的记录,最后调用 commit() 函数来执行删除操作。
综上所述,这就是一个完整的Python的ORM框架SQLAlchemy的入门教程,包含了创建连接、建立映射模型、创建表、插入数据、查询数据以及删除数据等基本操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python的ORM框架SQLAlchemy入门教程 - Python技术站