fastapi连接mysql
在Web开发中,与数据库进行交互是一个常见的任务。在很多情况下,我们需要将FastAPI应用程序连接到一个数据库,比如MySQL,以便能够从中读取数据或向其中写入数据。本文将详细介绍如何使用FastAPI来连接MySQL数据库。
步骤1:安装依赖
首先,我们需要安装一些必要的依赖:
pip install fastapi
pip install uvicorn
pip install sqlalchemy
pip install databases
pip install mysql-connector-python
步骤2:创建数据库连接
首先,我们需要创建数据库连接。在这里,我们将使用SQLAlchemy和databases库来实现与MySQL数据库的连接。
# main.py
from fastapi import FastAPI
from databases import Database
from sqlalchemy import create_engine, MetaData
# 设置数据库连接字符串
DATABASE_URL = "mysql+mysqlconnector://username:password@localhost/dbname"
# 创建FastAPI应用
app = FastAPI()
# 创建数据库引擎
engine = create_engine(DATABASE_URL)
# 创建数据库对象
database = Database(DATABASE_URL)
metadata = MetaData()
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
在上面的代码中,我们先创建了一个DATABASE_URL
的变量,用来存储MySQL数据库的连接字符串,其中包括用户名、密码、主机名和数据库名称。然后创建了一个FastAPI应用,以及一个数据库引擎和数据库对象。在应用启动时,通过startup
事件连接到数据库,在应用关闭时通过shutdown
事件断开连接。
步骤3:执行SQL查询
接下来,我们可以执行SQL查询并获取结果。在这里,我们创建一个API端点,用于查询数据库中的所有用户。
# main.py
from fastapi import FastAPI
from databases import Database
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, select
# 设置数据库连接字符串
DATABASE_URL = "mysql+mysqlconnector://username:password@localhost/dbname"
# 创建FastAPI应用
app = FastAPI()
# 创建数据库引擎
engine = create_engine(DATABASE_URL)
# 创建数据库对象
database = Database(DATABASE_URL)
metadata = MetaData()
# 创建users表
users = Table(
"users",
metadata,
Column("id", Integer, primary_key=True),
Column("name", String(50)),
)
@app.on_event("startup")
async def startup():
await database.connect()
@app.on_event("shutdown")
async def shutdown():
await database.disconnect()
@app.get("/users/")
async def get_users():
query = users.select()
return await database.fetch_all(query)
在上面的代码中,我们首先创建了一个users
表,该表包含id
和name
两个字段。然后创建了一个API端点/users/
,通过执行users.select()
查询数据库中的所有用户,并将结果返回给客户端。
步骤4:运行FastAPI应用
现在,我们可以使用uvicorn
运行FastAPI应用,以及访问/users/
端点来查看数据库中的所有用户。
uvicorn main:app --reload
打开浏览器访问http://localhost:8000/users/
,你将看到数据库中的所有用户信息。
总结
通过以上步骤,我们成功地使用FastAPI连接到了MySQL数据库,并实现了查询数据库的功能。在实际项目中,你可以根据自己的需求进一步扩展这个功能,比如实现插入、更新和删除数据等操作。