详解SQLAlchemy框架使用手册

1. 什么是SQLAlchemy框架

SQLAlchemy是一个流行的Python ORM框架,它为Python开发者提供一种方便的方式来连接和操作数据库,同时它还提供了一个底层SQL表达式构建器和一个类似于ActiveRecord的操作对象管理器。

ORM即对象关系映射,它可以让开发者以面向对象的方式来构建和操作数据库,而不需要写大量的SQL语句。

2. SQLAlchemy的安装

要使用SQLAlchemy,我们需要先安装它。可以使用pip包管理器在控制台中输入以下命令进行安装。

pip install sqlalchemy

在安装完成后,就可以在Python脚本中使用SQLAlchemy了。

3. 连接到数据库

3.1 配置数据库引擎

首先,我们需要在Python中指定使用哪种数据库引擎来连接数据库。SQLAlchemy支持各种不同的数据库引擎,例如MySQL、PostgreSQL和SQLite。

在本例中,我们将使用SQLite吧!

要使用SQLite数据库,我们需要启动一个SQLite数据库引擎。可以在Python中使用如下代码来配置数据库引擎:

from sqlalchemy import create_engine

engine = create_engine('sqlite:///example.db', echo=True)

上面代码中,我们使用了SQLAlchemy提供的create_engine()函数,来创建一个SQLite数据库引擎。engine是一个由create_engine()函数返回的实例对象。

echo属性是一个布尔值,通常用于开启引擎的调试模式,当它被设置为True时,会在控制台输出引擎日志信息。

3.2 创建连接

在连接到SQLite数据库之前,我们需要先创建一个连接。创建连接的方式也非常简单:

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)

session = Session()

上面的代码,我们定义了一个session变量,使其等于创建的sessionmaker实例对象的调用结果。

4. ORM映射

ORM映射的主要目的是将数据库中的表和Python中的类映射起来。一般情况下,表中的每一行都对应着Python中的一个对象,而Python对象的属性则对应着表的列。

4.1 创建类

在SQLAlchemy中,创建映射类一般都是通过继承Base类来实现的:

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import Column, Integer, String, Float

Base = declarative_base()

class Book(Base):

__tablename__ = 'books'

id = Column(Integer, primary_key=True)

title = Column(String)

author = Column(String)

price = Column(Float, default=0.0)

description = Column(String)

上述代码定义了一个Book类,它继承了Base类,表示它是一个ORM映射类。__tablename__属性指定了类对应的表名。类中的每个属性(Column)都表示表中的一个列。

primary_key表示该列为主键,如果想要设置该表的外键可以参考SQLAlchemy文档

5. 增删改查

接下来,我们就可以通过SQLAlchemy方式来对数据库进行增删改查操作了。

5.1 新增

使用ORM框架的最大好处之一就是可以将数据对象实例化到内存中,然后通过ORM框架的Session操作对象进行管理,最后提交到数据库中。

book = Book(title='Python Web开发实战', author='Jack', price=32.8, description='Python Web开发教程')

session.add(book)

session.commit()

上面的代码完成了一个图书对象的新增操作,首先使用Book对象创建一个新的实例,然后通过session.add()方法添加到当前会话会话之中,在最后使用session.commit()将Book对象持久化到数据库中。

5.2 修改

要修改一个对象,我们需要先查询到这个对象,再将其某个属性进行修改,例如:

book = session.query(Book).filter_by(title='Python Web开发实战').first()

book.price = 29.0

session.commit()

这里首先使用session.query()方法查询数据,查询完成之后通过修改price属性的值来修改图书价格,最后使用session.commit()将修改的数据更新到数据库中。

5.3 删除

要删除一个对象,我们也需要先查询到这个对象,然后将其从session中移除,最后通过session.commit()完成持久化的操作。

book = session.query(Book).filter_by(title='Python Web开发实战').first()

session.delete(book)

session.commit()

上述代码中,我们首先使用session.query()方法查询到一个Book对象,然后使用session.delete()方法将其从session中移除,最后使用session.commit()将修改的内容持久化到数据库中。

后端开发标签