sqlacodegen 数据库表结构生成SQLAlchemy model代码¶
0 背景¶
有时, 我们已经有了现成的sql表, 但是当表的字段比较复杂或者很多的时候, 我们手动编写SQLAlchemy Model表, 会比较繁琐, 因此可以使用一个懒人专用库sqlacodegen自动生成 model 模型代码。
根据现有的关系型数据库中的表结构生成 SQLAlchemy ORM模型的代码,它允许我们使用面向对象的方式来操作数据库,而不需要直接编写 SQL 查询语句。使用 sqlacodegen 工具,我们可以通过数据库的表结构生成相应的 SQLAlchemy 模型代码,这样我们就可以在 Python 中使用这些模型来进行数据库操作,而不需要手动编写这些模型类。
1 安装¶
使用pip命令来安装它:
2 使用¶
在命令行状态下使用以下命令进行操作.
mysql导出表命令¶
sqlite导出表命令¶
导出的Model代码如下:

3 其他用法¶
命令行参数¶
sqlacodegen [-h] [--version] [--schema SCHEMA] [--tables TABLES] [--noviews] [--noindexes] [--noconstraints]
[--nojoined] [--noinflect] [--noclasses] [--nocomments] [--outfile OUTFILE]
[url]
--tables: 指定导出的表名称,多个表用逗号隔开,如果命令不带--tables 参数,会生成所有的表.
--outfile: 指定导出模块名称models.py
自动加载表结构¶
使用autoload = True, 可以让模型代码跟数据库表字段关联起来,它会自动加载 model 的 Column, 但是这种方法我们看不到代码里面表字段名称. 一般不使用
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.sql.schema import Table
engine = create_engine("mysql+pymysql://root:123456@localhost:3306/web")
Base = declarative_base()
metadata = Base.metadata
metadata.bind = engine
class Employee(Base):
__table__ = Table("employees", metadata, autoload=True)
3 关于¶
欢迎关注我的个人公众号¶
