📜  SQLAlchemy ORM – 创建会话(1)

📅  最后修改于: 2023-12-03 15:20:17.924000             🧑  作者: Mango

SQLAlchemy ORM - 创建会话

简介

SQLAlchemy是Python中广泛使用的关系型数据库ORM框架,通过它我们可以方便的使用Python语言操作关系型数据库,从而可以更加专注于业务逻辑实现。Session是SQLAlchemy中的一个重要概念,它代表了一个到数据库的会话,通常用于执行数据库操作,包括数据查询、插入、修改和删除等。

创建Session

在使用SQLAlchemy之前,我们需要安装SQLAlchemy模块。可以使用pip命令在命令行中安装SQLAlchemy模块:

pip install sqlalchemy

接着,我们需要引入SQLAlchemy模块并创建一个数据库引擎,并用该引擎创建一个Session。首先,我们来看一下如何创建一个数据库引擎:

from sqlalchemy import create_engine

engine = create_engine('数据库类型://用户名:密码@服务器地址/数据库名')

以上代码中的数据库类型、用户名、密码、服务器地址和数据库名需要根据实际情况进行修改。例如,如果我们要连接MySQL数据库,可以将数据库类型改为“mysql”,用户名和密码改为正确的值,服务器地址改为IP地址或域名,数据库名改为实际的数据库名称。

然后,我们使用上面创建的数据库引擎来创建一个Session,代码如下:

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

以上代码中,我们使用sessionmaker()方法创建了一个Session类,bind参数为我们创建的数据库引擎engine,即将Session与数据库引擎关联起来。接着,我们就可以使用Session来执行各种数据库操作了。

使用Session

下面我们来看一下如何使用Session来执行一些基本的数据库操作,包括数据查询、插入、修改和删除等。

数据查询

首先,我们需要定义一个数据库模型,即将数据库中的表映射成Python类。例如,我们有一个students表,包含id、name和age三个字段,我们可以将其映射成一个Python类,代码如下:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = declarative_base()

class Student(Base):
    __tablename__ = 'students'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

以上代码中,我们使用declarative_base()方法创建了一个Base类,Student类继承自Base类,并通过__tablename__属性指定对应的表名,然后定义了id、name和age三个属性,分别与表中的id、name和age字段实现映射关系。

接着,我们可以使用Session来执行查询操作。例如,我们要查询students表中所有记录,代码如下:

students = session.query(Student).all()
for student in students:
    print(student.id, student.name, student.age)

以上代码中,我们使用Session的query()方法来查询所有的Student记录,并使用all()方法将结果保存在一个students变量中。然后,我们遍历students变量,对每个student对象分别输出id、name和age属性。

数据插入

数据插入通常通过创建一个新的Python对象,然后将该对象添加到Session中实现。例如,我们要向students表中插入一条记录,代码如下:

new_student = Student(name='John', age=20)
session.add(new_student)
session.commit()

以上代码中,我们创建了一个新的Student对象new_student,并设置了name和age属性。然后,我们使用Session的add()方法将new_student对象添加到Session中,最后调用commit()方法将修改提交到数据库中。

数据修改

数据修改通常通过查询出需要修改的记录,并修改其属性值实现。例如,我们要将students表中name为'John'的记录的age属性修改为21,代码如下:

student = session.query(Student).filter_by(name='John').first()
student.age = 21
session.commit()

以上代码中,我们使用Session的query()方法查询符合条件的第一条记录,并将其保存在student变量中。然后,我们修改student的age属性值为21,最后使用Session的commit()方法将修改提交到数据库中。

数据删除

数据删除通常通过查询出需要删除的记录,并使用Session的delete()方法将其从数据库中删除实现。例如,我们要删除students表中name为'John'的记录,代码如下:

student = session.query(Student).filter_by(name='John').first()
session.delete(student)
session.commit()

以上代码中,我们使用Session的query()方法查询符合条件的第一条记录,并将其保存在student变量中。然后,我们使用Session的delete()方法将student从数据库中删除,并使用commit()方法将修改提交到数据库中。

总结

Session是SQLAlchemy ORM中的一个重要概念,它代表了到数据库的一个会话,常用于执行数据查询、插入、修改和删除等操作。在使用Session之前,我们需要创建一个数据库引擎,并使用它来创建一个Session。在使用Session时,我们需要定义数据库模型,查询、插入、修改和删除数据都需要使用Session来实现。通过本文的介绍,相信读者对SQLAlchemy ORM和Session的基本使用有了初步了解。