Python 30 天拓展:数据库连接之 SQLAlchemy(初步)

Python 30 天拓展:数据库连接之 SQLAlchemy(初步)

技术教程gslnedu2025-01-12 12:15:0023A+A-

在前面学习了 Flask 框架用于构建 Web 应用程序的相关知识后,我们发现应用往往需要持久化存储数据,这时就离不开数据库的使用了。今天我们将引入 SQLAlchemy 这个强大的数据库抽象层库,它允许我们使用统一的方式与多种不同类型的数据库进行交互,极大地简化了数据库操作的流程。接下来,让我们开启 SQLAlchemy 的初步学习之旅吧。

一、SQLAlchemy 库的安装

要使用 SQLAlchemy 库,首先需要进行安装。如果使用常见的 pip 包管理器,可以在命令行中输入以下命令来安装 SQLAlchemy:

pip install sqlalchemy

安装成功后,就可以在 Python 脚本中导入 sqlalchemy 模块来使用了。

二、连接数据库的基本方法


  1. 配置数据库连接字符串
    不同类型的数据库有着不同的连接字符串格式,以下分别以 SQLite 和 MySQL 为例进行介绍。

SQLite 数据库连接字符串


SQLite 是一个轻量级的嵌入式数据库,非常适合用于本地开发和测试。其连接字符串格式如下:

# SQLite 连接字符串示例,这里假设数据库文件名为 my_database.db
sqlite_connection_string = "sqlite:///my_database.db"


其中,sqlite:/// 表示使用 SQLite 协议,后面紧跟的是数据库文件的路径,如果只写文件名(如上述示例),则默认在当前工作目录下创建或查找该文件。

MySQL 数据库连接字符串


对于 MySQL 数据库,连接字符串通常包含主机地址、端口号、用户名、密码以及数据库名称等信息,格式如下:

# MySQL 连接字符串示例,根据实际情况替换相应参数
mysql_connection_string = "mysql+pymysql://username:password@host:port/database_name"


例如:

mysql_connection_string = "mysql+pymysql://root:123456@localhost:3306/mydb"


这里使用了 mysql+pymysql,表示使用 pymysql 作为 MySQL 的驱动(需要提前安装 pymysql 库),后面依次是用户名、密码、主机地址、端口号以及要连接的数据库名称。


  1. 创建数据库引擎
    配置好连接字符串后,就可以使用 SQLAlchemy 创建数据库引擎了,数据库引擎是与数据库进行交互的核心组件。示例代码如下:
from sqlalchemy import create_engine

# 以 SQLite 为例创建数据库引擎
engine = create_engine(sqlite_connection_string)


对于 MySQL 等其他数据库,只需将对应的连接字符串传入 create_engine 函数即可创建相应的数据库引擎,例如:

engine = create_engine(mysql_connection_string)

三、在 Flask 应用中使用 SQLAlchemy 进行数据库操作(以 SQLite 为例)


  1. 在 Flask 应用中集成 SQLAlchemy
    首先,需要在 Flask 应用中初始化 SQLAlchemy。假设我们有如下的 Flask 应用基础代码:
from flask import Flask
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

app = Flask(__name__)

# 配置数据库连接字符串(以 SQLite 为例)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///my_database.db"
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
Session = sessionmaker(bind=engine)

# 创建一个数据库会话对象,用于后续操作
db_session = Session()

if __name__ == '__main__':
    app.run(debug=True)


在上述代码中,通过 app.config['SQLALCHEMY_DATABASE_URI'] 配置了数据库连接字符串,然后创建了数据库引擎,并使用 sessionmaker 创建了一个会话工厂,最后通过工厂生成了一个实际的数据库会话对象 db_session,这个对象将用于执行数据库的各种操作。


  1. 创建数据库表(定义数据模型)
    使用 SQLAlchemy 的 ORM(对象关系映射)功能来定义数据库表结构,以创建一个简单的用户表为例,代码如下:
from flask import Flask
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker, declarative_base

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///my_database.db"
engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
Session = sessionmaker(bind=engine)
db_session = Session()

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String(50), nullable=False)
    password = Column(String(50), nullable=False)

Base.metadata.create_all(engine)

if __name__ == '__main__':
    app.run(debug=True)

在上述代码中,首先通过 declarative_base() 创建了一个基类 Base,然后定义了 User 类继承自这个基类,在 User 类中通过 Column 定义了表的列结构,包括 id(整数类型,为主键)、username(字符串类型,长度限制为 50,不允许为空)、password(字符串类型,长度限制为 50,不允许为空)。最后通过 Base.metadata.create_all(engine) 让 SQLAlchemy 根据定义的模型创建对应的数据库表结构。


  1. 数据的插入操作
    插入用户数据到刚才创建的 users 表中,示例代码如下:
new_user = User(username='test_user', password='123456')
db_session.add(new_user)
db_session.commit()


在上述代码中,首先创建了一个 User 类的实例,也就是一个新用户对象,设置好用户名和密码后,通过 db_session.add(new_user) 将这个新用户添加到会话中,最后调用 db_session.commit() 提交事务,将数据真正插入到数据库表中。


  1. 数据的查询操作
    查询 users 表中的用户数据,示例代码如下:
users = db_session.query(User).all()
for user in users:
    print(f"用户名:{user.username},密码:{user.password}")

在上述代码中,通过 db_session.query(User).all() 从数据库中查询出所有的 User 表记录,返回的是一个包含 User 对象的列表,然后通过循环遍历这个列表,打印出每个用户的用户名和密码信息。


通过今天对 SQLAlchemy 的初步学习,我们掌握了连接数据库、在 Flask 应用中创建数据库表以及进行简单的数据插入和查询操作的方法。这为我们后续开发功能更完善、数据驱动的 Web 应用程序奠定了坚实的基础,让数据能够在应用中得到妥善的存储和运用。


#SQLAlchemy 初步# #数据库连接# #Flask 与数据库# #数据操作入门# #Python 数据库应用# #Web 应用数据持久化#

点击这里复制本文地址 以上内容由朽木教程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

朽木教程网 © All Rights Reserved.  蜀ICP备2024111239号-8