Python数据库反向生成Model最优方案示例

 更新时间:2022年07月28日 14:03:55   作者:编程学习网  
这篇文章主要介绍了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 字段参数值需要略微调整

以上就是Python数据库反向生成Model最优方案的详细内容,更多关于Python数据库反向生成Model的资料请关注脚本之家其它相关文章!

相关文章

  • Python实现的微信公众号群发图片与文本消息功能实例详解

    Python实现的微信公众号群发图片与文本消息功能实例详解

    这篇文章主要介绍了Python实现的微信公众号群发图片与文本消息功能,结合实例形式详细分析了Python调用微信接口实现微信公众号群发图片与文本消息的具体操作步骤与相关注意事项,需要的朋友可以参考下
    2017-06-06
  • python的多元数据类型(下)

    python的多元数据类型(下)

    这篇文章主要为大家详细介绍了python的多元数据类型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 基于OpenCV的仿射变换实现方法

    基于OpenCV的仿射变换实现方法

    这篇文章主要给大家介绍了关于基于OpenCV的仿射变换实现方法,仿射变换相当于将二维平面上的每个坐标点与一个2x3的矩阵相乘,得到新的坐标,而透视变换则是与3x3的矩阵相乘,需要的朋友可以参考下
    2024-01-01
  • python3+selenium实现126邮箱登陆并发送邮件功能

    python3+selenium实现126邮箱登陆并发送邮件功能

    这篇文章主要为大家详细介绍了python3+selenium实现126邮箱登陆并发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • bat和python批量重命名文件的实现代码

    bat和python批量重命名文件的实现代码

    这篇文章主要介绍了bat和python批量重命名文件的实现代码,需要的朋友可以参考下
    2016-05-05
  • python登录并爬取淘宝信息代码示例

    python登录并爬取淘宝信息代码示例

    这篇文章主要介绍了python 登录并爬取淘宝信息代码示例,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • python新手练习实例之万年历

    python新手练习实例之万年历

    最近进行python基础培训,课下作业制作万年历,之前没做过,感觉里面还是有很多需要学的,下面这篇文章主要给大家介绍了关于python新手练习实例之万年历的相关资料,需要的朋友可以参考下
    2022-05-05
  • python针对不定分隔符切割提取字符串的方法

    python针对不定分隔符切割提取字符串的方法

    今天小编就为大家分享一篇python针对不定分隔符切割提取字符串的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python OpenCV寻找两条曲线直接的最短距离

    Python OpenCV寻找两条曲线直接的最短距离

    这篇文章主要为大家详细介绍了Python OpenCV寻找两条曲线直接的最短距离,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 使用Python进行数据清洗和预处理的实现代码

    使用Python进行数据清洗和预处理的实现代码

    Python作为数据科学领域的热门编程语言,提供了丰富的库和工具来处理和清洗数据,本文将介绍如何使用Python进行数据清洗和预处理,并提供相应的代码示例,需要的朋友可以参考下
    2024-05-05

最新评论