当前位置: 首页 > 后端技术 > Python

谈谈Python中数据库逆向生成Model的最优解

时间:2023-03-26 02:00:30 Python

一、前言熟悉Django的朋友应该知道,我们可以使用“inspectdb”命令从数据库表中反向生成一个Model并写入文件。比如Django项目映射数据库中有一张student表,我们要反向生成一个Model并写入到本地文件models.py中,只需要输入如下命令即可:#反向生成模型#输入项目根目录下,输入以下命令#其中#student:映射数据库的学生数据表#写在index下Appmodels.py文件中python3manage.pyinspectdbstudent>index/models.py但如果是一个普通的Python项目,如何反向生成Model?2.反向生成普通项目的Model。假设项目使用“sqlalchemy”连接并操作数据库fromsqlalchemyimportcreate_enginefromsqlalchemy.ormimportsessionmakerengine=create_engine('mysql+pymysql://{}:{}@{}:{}/{}'。format(user,password,host,port,database),echo=True)session=sessionmaker(bind=self.engine)()...接下来我们安装依赖“sqlacodegen”#安装依赖pip3这样安装sqlacodegen,我们可以使用sqlacodegen命令关联数据库表,在本地一键生成Modeldefgenerate_orm_table(db_ip,db_name,table_name,output,username='root',pwd='root',port=3306):"""generateorm数据表:return:"""exec_cmd('sqlacodegen--tables{}--outfile{}mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(table_name,output,username,pwd,db_ip,port,db_name))if__name__=='__main__':#生成orm数据库表table_name='zlb_users'#生成模型generate_orm_table("192.168.*.*","db_name","table_name","./../model/{}.py".format(table_name))3.最后,虽然可以在命令行中一键生成Model,但是有些生成的字段可能有错误,需要手动调整,源码等,免费分享给大家!想上“Python编程学习圈”,发“J”免费领取