FastAPI与MySQL数据库的集成
引言
在现代的网络应用开发中,数据库是一个非常重要的组成部分。数据库可以存储和管理应用程序的数据,同时提供了高效的数据查询和处理功能。FastAPI是一种现代、快速(高性能)、Web(基于标准Python类型注解)框架,旨在帮助构建高效的API。本文将介绍如何在FastAPI中集成MySQL数据库,并提供一些基本的示例代码。
安装依赖
在开始之前,我们需要安装一些依赖库。在本文中,我们将使用mysql-connector-python
库来连接MySQL数据库。
pip install fastapi
pip install uvicorn
pip install mysql-connector-python
连接MySQL数据库
首先,我们需要在FastAPI应用程序中进行数据库连接的设置。以下是一个示例:
import mysql.connector
# 创建数据库连接
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='your_host', database='your_database')
# 创建游标
cursor = cnx.cursor()
在上面的代码示例中,我们通过mysql.connector.connect()
方法创建了一个数据库连接。请确保将your_username
、your_password
、your_host
和your_database
替换为实际的值,以便正确连接到您的MySQL数据库。
创建表
接下来,我们将创建一个示例表来存储用户数据。以下是一个示例:
create_table_query = '''
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT
)
'''
# 执行创建表的SQL语句
cursor.execute(create_table_query)
# 确保更改提交到数据库
cnx.commit()
在上面的代码示例中,我们使用CREATE TABLE
语句创建了一个名为users
的表。这个表具有三个列:id
、name
和age
。id
列是一个自增的主键,name
列是一个不为空的字符串,age
列是一个整数类型。
插入数据
现在,我们将向表中插入一些测试数据。以下是一个示例:
insert_query = '''
INSERT INTO users (name, age) VALUES (%s, %s)
'''
# 插入一些测试数据
users = [
('Alice', 25),
('Bob', 30),
('Charlie', 35)
]
# 执行插入数据的SQL语句
cursor.executemany(insert_query, users)
# 确保更改提交到数据库
cnx.commit()
在上面的代码示例中,我们使用INSERT INTO
语句插入了一些测试数据到users
表中。我们使用executemany()
方法来执行插入操作,并传递一个包含多个元组的列表作为参数。
查询数据
现在,我们将从表中查询数据。以下是一个示例:
select_query = '''
SELECT * FROM users
'''
# 执行查询数据的SQL语句
cursor.execute(select_query)
# 获取查询结果
results = cursor.fetchall()
# 打印查询结果
for row in results:
print(f'ID: {row[0]} Name: {row[1]} Age: {row[2]}')
在上面的代码示例中,我们使用SELECT * FROM
语句查询了users
表中的所有数据。我们使用fetchall()
方法获取查询结果,并使用循环遍历结果并打印出每行数据。
关闭连接
当我们完成与数据库的交互后,需要关闭数据库连接以释放资源。以下是一个示例:
# 关闭游标
cursor.close()
# 关闭连接
cnx.close()
在上面的代码示例中,我们使用close()
方法关闭了游标和连接对象。
完整示例
下面是一个完整的示例,演示了如何在FastAPI中集成MySQL数据库:
from fastapi import FastAPI
import mysql.connector
app = FastAPI()
# 创建数据库连接
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='your_host', database='your_database')
# 创建游标
cursor = cnx.cursor()
# 创建表
create_table_query = '''
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age INT