最近在学习flask开发一个自己的网站。众所周知,在flask中,为了方便操作数据库会使用SQLAlchemy,而SQLAlchemy的使用需要符合规则的dbmodel。
而计划赶不上变化,在开发的过程中计划始终赶不上变化,随着想法的改变,经常会更改数据库结构。虽然可以直接在代码中编写指定的结构,然后再进行删除创建步骤。但对于初学者,没必要专门学习SQLAlchemy的dbmodel如何编写,有这个时间不如多学习一下sql语句。
废话不多说,现在开始操作。
1. 安装sqlacodegen
pip install sqlacodegen # 普通方式
pipenv install sqlacodegen # 虚拟环境方式
2.在终端运行命令,即可看到符合SQLAlchemy的model代码
sqlacodegen [options] <database_url>
# 这个是sqlacodegen的标准格式,我使用的是mysql,可以参考以下命令
# sqlacodegen mysql+pymysql://username:password@ip/database
<pymysql是指定sqlacodegen的渲染引擎,也可以使用默认的mysqldb>
3.怎能止步于此--我们程序员第一反应肯定想着如何用代码实现,我使用的是subprocess模块,也可以尝试使用os模块是否可以实现。(因为我是在pipenv环境,使用加了pipenv run前缀)(不建议直接写入到models.py文件,一定要形成做备份的习惯)
import subprocess
sub = subprocess.run("pipenv run sqlacodegen mysql+pymysql://username:password@ip/database",stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True,text=True)
data = sub.stdout.split("\n")
with open("./models.txt", "w", encoding="utf-8") as f:
f.write("\n".join(data))
现上海需要招聘软件测试(有音视频经验最好)、前端开发(具有react经验)、后端开发(go),都是大厂,薪资具有优势,有意向者请私信