使用SQLAlchemy操作数据库表过程解析

SQLAlchemy简介

SQLAlchemy是一个Python SQL 工具和对象关系映射(ORM)库。它提供了一组可靠的数据持久性模式,并且还提供了与数据库通信和处理数据的一些工具。

对于许多Python应用程序开发者而言,SQLAlchemy是他们选择的ORM工具。相对于其他ORM工具,SQLAlchemy具有更多的功能,并且与大多数数据库系统一起使用。

下面我们开始具体讲解如何使用SQLAlchemy库来操作数据库表。

安装SQLAlchemy库

在使用SQLAlchemy之前,我们需要先安装其库。

pip3 install sqlalchemy

连接数据库

创建engine

我们首先需要用SQLAlchemy创建一个engine对象并连接到我们的数据库,engine是一个数据库的接口,它负责与数据库的通信。

from sqlalchemy import create_engine

engine = create_engine('postgresql://user:password@localhost/dbname')

上面的代码中,我们使用了postgresql作为数据库,用户名为user,密码为password,数据库名为dbname,这里的localhost代表了本地主机,如果需要连接到远程主机,我们可以使用IP地址或者主机名代替localhost。

创建Session

我们可以使用engine来创建一个会话(Session)对象,它负责与数据库进行通信并管理事务。

from sqlalchemy.orm import Session

session = Session(engine)

可以看到,我们将engine对象传递给Session构造函数即可创建一个Session实例。接下来,我们可以使用此实例来执行各种SQL操作。

创建表格

定义模型

在使用ORM时,我们需要定义一个模型(Model),这是我们操作数据的方式。

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import Column, Integer, String

Base = declarative_base()

class User(Base):

__tablename__ = 'users'

id = Column(Integer, primary_key=True)

name = Column(String)

age = Column(Integer)

上面的代码中,我们定义了一个叫做User的模型,用来表示一个用户,它有三个属性,id、name、age,其中id为主键。

创建表

定义好模型后,我们可以使用下面的代码对数据库中的表进行创建:

Base.metadata.create_all(engine)

实际上,该命令会检查我们在Base中定义的所有模型,然后为其中每个模型创建一个对应的表格。

操作数据

下面我们看一下如何在使用SQLAlchemy中对数据进行增删改查操作。

插入数据

我们可以通过创建实体对象并添加到Session中来插入数据:

user = User(name='Bob', age=20)

session.add(user)

session.commit()

在上面的代码中,我们建立了一个User对象,将其加入到Session中,最后调用commit方法来将修改提交到数据库中。

查询数据

与使用SQL语句查询不同,使用ORM查询表中的数据需要首先获取一个查询对象(Query),然后使用该对象进行相关查询操作。

例如,我们可以通过如下代码查询所有用户的信息:

users = session.query(User).all()

for user in users:

print(user.name, user.age)

上面的代码中,我们使用了session对象的query方法来创建一个查询对象,并指定查询的模型为User。all()函数表示查询全部,可以遍历查询结果并打印出所有用户的姓名和年龄。

更新数据

更新数据同样也需要使用Session对象,在更新完成后调用commit方法来提交修改。

user = session.query(User).filter_by(name='Bob').first()

user.age = 30

session.commit()

上面的代码中,我们使用filter_by方法获取了名字为Bob的数据,并将其年龄设置为30。

删除数据

使用Session对象删除数据也很简单,同样需要在删除完成后调用commit方法。

user = session.query(User).filter_by(name='Bob').first()

session.delete(user)

session.commit()

上面的代码中,我们使用filter_by方法获取了名字为Bob的数据,并调用了Session对象的delete方法来删除该对象。

总结

SQLAlchemy是一个强大的Python SQL 工具和ORM库,可以大幅简化我们与数据库的交互过程。在上面的文章中,我们首先安装了SQLAlchemy库,然后通过创建engine连接上了数据库。接着,我们定义了一个User模型,并使用Base.metadata.create_all(engine)来创建了表,最后我们演示了如何增删改查数据。

后端开发标签