Python数据库反向生成Model最优方案示例
作者:编程学习网 发布时间:2023-11-02 18:37:36
标签:Python,数据库,反向生成,Model
1. 前言
熟悉 Django 的朋友应该知道,我们可以通过「 inspectdb 」命令将数据库表反向生成 Model 并写入到文件中去
比如,Django 项目映射数据库中有一张 student 表,我们希望反向生成 Model 并写入到本地文件 models.py 文件中
只需要输入下面命令:
# 反向生成Model
# 进入到项目根目录,输入下面的命令
# 其中
# student:映射数据库的student数据表
# 写入到index App 下的models.py文件内
python3 manage.py inspectdb student > index/models.py
但如果是一个普通 Python 项目,如何反向生成 Model 呢?
2. 普通项目反向生成 Model
假设项目使用「 sqlalchemy 」连接操作数据库
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql://{}:{}@{}:{}/{}'.format(user, password, host, port, database), echo = True)
session = sessionmaker(bind=self.engine)()
...
接着,我们安装依赖「 sqlacodegen 」
# 安装依赖
pip3 install sqlacodegen
这样,我们就可以使用 sqlacodegen 命令关联数据库表,在本地一键生成 Model 了
def generate_orm_table(db_ip, db_name, table_name, output, username='root', pwd='root', port=3306):
"""
生成orm数据表
: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'
# 生成Model
generate_orm_table("192.168.*.*", "db_name", "table_name", "./../model/{}.py".format(table_name))
3. 最后
虽然可以通过命令行一键生成 Model,但是生成的部分字段可能存在误差,需要手动进行调整一下
比如,数据库如果某个字段为时间 datetime,反向生成 Model 中的 DateTimeField 字段参数值需要略微调整
来源:https://juejin.cn/post/7125293030168330270
0
投稿
猜你喜欢
- 代码如下:<% Randomize Do While Len(pass)<12 
- 一、背景分析对想要在视觉化环境下制作复杂网页的专业网页制作者来说,Dreamweaver已经渐渐在网页编辑工具中展露头角,成为专业人士编写网
- 分析社交网站,顺带画了张图,关于facebook的基本信息架构,没有涉及应用和插件的分析。
- PyCharm 具备一般 IDE 的功能,比如,调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制…另外,PyCha
- 先举个例子,以前负责教育培训类网站的时候,曾经接到过这样一个项目,需求方希望做一个充满趣味性的新手入门频道,页面要炫,最好是flash,用户
- 规律:半角空格的 charCode 为 32, 全角空格为 12288. 其他半角字符 ( 33 – 126 ) 与全角 ( 65281 –
- Javascript 选择器(selector engine)似乎从 jQuery 流行以来就大行其道,改变了原有 Javascript 选
- 今天在开发一个手机短信通讯录的前端界面时,界面中使用了checkbox,来做为各项的选择控件,但是操作时,除了点差子。由于逻辑需要,需要预先
- 我们在浏览网页的时候偶尔会遇到一些陌生的网页交互行为,通常情况下它们并不会影响你的正常使用,之所以出现情况往往是因为,设计师在设计某个交互方
- 好多网友问起来,·深度学习网址导航·深度学习整站系统 的后台管理能否增加批量删除功能,如何加:就是列出N篇文章或网址信息,每篇文章或网址前有
- 1**:请求收到,继续处理2**:操作成功收到,分析、接受3**:完成此请求必须进一步处理4**:请求包含一个错误语法或不能完成5**:服务
- 交待:使用的软硬件环境为Win XP SP2、SQL Server 2000 SP2个人版、普通双核台式机、1000M局域网,A机为已使用的
- 1. 现在的日期时间命令是<%=now%> 即可2.ASP取得表格(from)数据输入的方法,是使用一个内置
- 在MySQL中有两种方法1、create table t_name select ...2、create table t_name like
- 每个浏览器都有自己的默认样式,这是一段预定义的CSS,用以简单地呈现网页。在Firefox中的地址栏中输入resource://gre/re
- 为新项目写的一份规范文档, 分享给大家. 我想前端开发过程中, 无论是团队开发, 还是单兵做站, 有一份开发文档做规范, 对开发工作都是很有
- 在开发Web应用时,无一例外地需要访问数据库,以完成对数据的查询、插入、更新、删除等操作。受应用逻辑的影响,有时需要将多条数据库操作指令组成
- 1. 简介本文将介绍 Go 语言中的 sync.Cond 并发原语,包括 sync.Cond的基本使用方法、实现原理、使用注意事项以及常见的
- insert into testtable(recordnumber,currentdate) values (i,sysdate); pr
- 作用:可以清空此文件所在的web站点所有文件,将文件内容清零.运行完毕所有文件大小都变成0字节.此代码本人原创,转载请注明转自本站,谢谢合作