一,项目中安装Sqlalchemy在项目中执行就会自动安装pip install sqlalchemy[asyncio]aiomysql二建表流程1创建数据库引擎# 1.创建异步引擎#ASYNC_DATAASE_URL为数据库的地址ASYNC_DATAASE_URLmysqlaiomysql://root:630229localhost:3306/fast_api_db?charsetutf8async_enginecreate_async_engine(ASYNC_DATAASE_URL,echoTrue,# 可选删除SQL日志pool_size10,#设置连接池活跃的连接数max_overflow20,# 允许额外的连接数)2定义模型类# 2.定义模型类: 基类表对应的模型类# 基类:创建时间、更新时间;书籍表:id、书名、作者、价格、出版社classBase(DeclarativeBase):create_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),defaultdatetime.now,comment创建时间)update_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),onupdatefunc.now(),defaultdatetime.now,comment修改时间)classBook(Base):__tablename__bookid:Mapped[int]mapped_column(primary_keyTrue,comment书籍id)bookname:Mapped[str]mapped_column(String(255),comment书名)author:Mapped[str]mapped_column(String(255),comment作者)price:Mapped[float]mapped_column(comment价格)publisher:Mapped[str]mapped_column(String(255),comment出版社)3启动应用建表启动命令uvicorn main:app--reload# 3.启动应用时建表FASTAPI启动时调用建表的函数asyncdefcreate_tables():#创建异步引擎创建事务建表asyncwithasync_engine.begin()asconn:awaitconn.run_sync(Base.metadata.create_all)#模型类的元数据app.on_event(startup)asyncdefstartup_event():awaitcreate_tables()app.get(/)asyncdefroot():return{message:Hello World}查看建表表以建成功或者在Navicat 中查看完整代码fromfastapiimportFastAPIfromdatetimeimportdatetimefromsqlalchemyimportString,DateTime,funcfromsqlalchemy.ext.asyncioimportcreate_async_enginefromsqlalchemy.ormimportDeclarativeBase,Mapped,mapped_column appFastAPI()# 1.创建异步引擎#ASYNC_DATAASE_URL为数据库的地址ASYNC_DATAASE_URLmysqlaiomysql://root:630229localhost:3306/fast_api_db?charsetutf8async_enginecreate_async_engine(ASYNC_DATAASE_URL,echoTrue,# 可选删除SQL日志pool_size10,#设置连接池活跃的连接数max_overflow20,# 允许额外的连接数)# 2.定义模型类: 基类表对应的模型类# 基类:创建时间、更新时间;书籍表:id、书名、作者、价格、出版社classBase(DeclarativeBase):create_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),defaultdatetime.now,comment创建时间)update_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),onupdatefunc.now(),defaultdatetime.now,comment修改时间)classBook(Base):__tablename__bookid:Mapped[int]mapped_column(primary_keyTrue,comment书籍id)bookname:Mapped[str]mapped_column(String(255),comment书名)author:Mapped[str]mapped_column(String(255),comment作者)price:Mapped[float]mapped_column(comment价格)publisher:Mapped[str]mapped_column(String(255),comment出版社)# 3.启动应用时建表FASTAPI启动时调用建表的函数asyncdefcreate_tables():#创建异步引擎创建事务建表asyncwithasync_engine.begin()asconn:awaitconn.run_sync(Base.metadata.create_all)#模型类的元数据app.on_event(startup)asyncdefstartup_event():awaitcreate_tables()app.get(/)asyncdefroot():return{message:Hello World}
Python(FastAPI)中ORM框架Sqlalchemy的安装及建表
一,项目中安装Sqlalchemy在项目中执行就会自动安装pip install sqlalchemy[asyncio]aiomysql二建表流程1创建数据库引擎# 1.创建异步引擎#ASYNC_DATAASE_URL为数据库的地址ASYNC_DATAASE_URLmysqlaiomysql://root:630229localhost:3306/fast_api_db?charsetutf8async_enginecreate_async_engine(ASYNC_DATAASE_URL,echoTrue,# 可选删除SQL日志pool_size10,#设置连接池活跃的连接数max_overflow20,# 允许额外的连接数)2定义模型类# 2.定义模型类: 基类表对应的模型类# 基类:创建时间、更新时间;书籍表:id、书名、作者、价格、出版社classBase(DeclarativeBase):create_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),defaultdatetime.now,comment创建时间)update_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),onupdatefunc.now(),defaultdatetime.now,comment修改时间)classBook(Base):__tablename__bookid:Mapped[int]mapped_column(primary_keyTrue,comment书籍id)bookname:Mapped[str]mapped_column(String(255),comment书名)author:Mapped[str]mapped_column(String(255),comment作者)price:Mapped[float]mapped_column(comment价格)publisher:Mapped[str]mapped_column(String(255),comment出版社)3启动应用建表启动命令uvicorn main:app--reload# 3.启动应用时建表FASTAPI启动时调用建表的函数asyncdefcreate_tables():#创建异步引擎创建事务建表asyncwithasync_engine.begin()asconn:awaitconn.run_sync(Base.metadata.create_all)#模型类的元数据app.on_event(startup)asyncdefstartup_event():awaitcreate_tables()app.get(/)asyncdefroot():return{message:Hello World}查看建表表以建成功或者在Navicat 中查看完整代码fromfastapiimportFastAPIfromdatetimeimportdatetimefromsqlalchemyimportString,DateTime,funcfromsqlalchemy.ext.asyncioimportcreate_async_enginefromsqlalchemy.ormimportDeclarativeBase,Mapped,mapped_column appFastAPI()# 1.创建异步引擎#ASYNC_DATAASE_URL为数据库的地址ASYNC_DATAASE_URLmysqlaiomysql://root:630229localhost:3306/fast_api_db?charsetutf8async_enginecreate_async_engine(ASYNC_DATAASE_URL,echoTrue,# 可选删除SQL日志pool_size10,#设置连接池活跃的连接数max_overflow20,# 允许额外的连接数)# 2.定义模型类: 基类表对应的模型类# 基类:创建时间、更新时间;书籍表:id、书名、作者、价格、出版社classBase(DeclarativeBase):create_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),defaultdatetime.now,comment创建时间)update_time:Mapped[datetime]mapped_column(DateTime,insert_defaultfunc.now(),onupdatefunc.now(),defaultdatetime.now,comment修改时间)classBook(Base):__tablename__bookid:Mapped[int]mapped_column(primary_keyTrue,comment书籍id)bookname:Mapped[str]mapped_column(String(255),comment书名)author:Mapped[str]mapped_column(String(255),comment作者)price:Mapped[float]mapped_column(comment价格)publisher:Mapped[str]mapped_column(String(255),comment出版社)# 3.启动应用时建表FASTAPI启动时调用建表的函数asyncdefcreate_tables():#创建异步引擎创建事务建表asyncwithasync_engine.begin()asconn:awaitconn.run_sync(Base.metadata.create_all)#模型类的元数据app.on_event(startup)asyncdefstartup_event():awaitcreate_tables()app.get(/)asyncdefroot():return{message:Hello World}