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

目录
  • 1. 前言
  • 2. 普通项目反向生成 Model
  • 3. 最后

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的资料请关注我们其它相关文章!

(0)

相关推荐

  • python django model联合主键的例子

    今天,在家试试django的model的设置,如何设置的联合主键,我经过查资料和实践,把结果记录如下: 例如: class user(Model): id=AutoField(primary_key=True) name = CharField(max_length=30) age =IntegerField() class role(Model): id=AutoField(primary_key=True) name=CharField(max_length=10) 这是两个model有一个

  • Python Django2 model 查询介绍(条件、范围、模糊查询)

    条件查询 范围查询 模糊查询 条件查询 all() 返回全部结果集 filter(**kwargs) 返回满足参数定义的结果集 例如 Entry.objects.filter(pub_date__year=2006) exclude(**kwargs) 返回不满足参数定义的结果集 例如 Entry.objects.exclude(pub_date__year=2006) 链式查询 Entry.objects.filter(... headline__startswith='What'... )

  • Python数学建模StatsModels统计回归可视化示例详解

    目录 1.如何认识可视化? 2.StatsModels 绘图工具包 (Graphics) 3.Matplotlib 绘图工具包 4.Seaborn 绘图工具包 5.多元回归案例分析(Statsmodels) 5.1 问题描述 5.2 问题分析 观察数据分布特征 观察数据间的相关性 建模与拟合 6.Python 例程(Statsmodels) 6.1 问题描述 6.2 Python 程序 6.3 程序运行结果: 1.如何认识可视化? 需要指出的是,虽然不同绘图工具包的功能.效果会有差异,但在常用功

  • Python Web框架之Django框架Model基础详解

    本文实例讲述了Python Web框架之Django框架Model基础.分享给大家供大家参考,具体如下: model是关于你的数据的单一的,确定的信息来源. 它包含您正在存储的数据的基本字段和行为.Django通过抽象化的模型层(models)为你的网络应用提供对于数据的结构化处理和操作处理,数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,使用数据库API对数据库进行增删改查的操作. 使用哪种数据库,只需要在se

  • python自动生成model文件过程详解

    生成方式 Python中想要自动生成 model文件可以通过 sqlacodegen这个命令来生成对应的model文件 sqlacodegen 你可以通过pip去安装: pip install sqlacodegen 格式: sqlacodegen mysql+pymysql://username:password@host/database_name > model.py 说明: mysql+pymysql : 表示连接数据库的连接方式 username : 连接MySQL数据库的用户名 pa

  • Python实现word2Vec model过程解析

    这篇文章主要介绍了Python实现word2Vec model过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import gensim, logging, os logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) import nltk corpus = nltk.corpus.brown.sents()

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

    目录 1. 前言 2. 普通项目反向生成 Model 3. 最后 1. 前言 熟悉 Django 的朋友应该知道,我们可以通过「 inspectdb 」命令将数据库表反向生成 Model 并写入到文件中去 比如,Django 项目映射数据库中有一张 student 表,我们希望反向生成 Model 并写入到本地文件 models.py 文件中 只需要输入下面命令: # 反向生成Model # 进入到项目根目录,输入下面的命令 # 其中 # student:映射数据库的student数据表 # 写

  • Mysql数据库反向生成Django里面的models指令方式

    python manage.py inspectdb 或 python manage.py inspect > app/models.py 补充知识:Django框架MySQL数据库到models模型的映射关系 一.前言 我的数据库已经用MySQL Workbench设计好了,也插入了一些测试数据,现在开始在Django中设计models模型.本以为顺风顺水,没想到也遇到一些bug,现在记录一下踩坑填坑过程. 二.设计models模型 1. 如果数据库中表的数量比较多,可以先导出,然后查看对应表

  • django如何根据现有数据库表生成model详解

    目录 一,在setting.py中配置好连接数据库的参数 二,打开cmd或pycharm的Terminal输入命令 三,managed = False 删除或改为 managed = True 四,执行迁移 补充:Django根据数据库表反向生成Model 总结 题记:django如果要并和原有的数据库,那么就需要把现有数据库的表写入model.py中. 一,在setting.py中配置好连接数据库的参数 在setting中的DATABASESZ中配置默认参数,并在INSTALLED_APPS中

  • Python numpy.array()生成相同元素数组的示例

    如下所示: new_array = np.zeros((5,4)) for i in range(3): new_array[i] = np.array([0.25]*4) 运行结果: >>> new_array array([[0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0.25, 0.25, 0.25, 0.25], [0. , 0. , 0. , 0. ], [0. , 0. , 0. , 0. ]]) 以上这篇Pytho

  • mybatis plus generator 根据数据库自动生成实体类的实现示例

    目录 1.添加依赖 2.编写代码生成器 3.运行主程序,输入表名 1.添加依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <dependency> <groupId&g

  • python实现的生成word文档功能示例

    本文实例讲述了python实现的生成word文档功能.分享给大家供大家参考,具体如下: 每月1次的测试费用报销,需要做一个文档.干脆花点时间写个程序吧. # -*- coding: utf-8 -*- from tools import get_data from docx import Document def new_doc(fee_data,doc_path,fee):#新建一个word文档,写入汇总表的数据 document = Document() p_total = document

  • Django多数据库配置及逆向生成model教程

    在项目中我们每个app对应不同的数据库,其中有一个是从数据库逆向生成model,做个笔记. 1.修改项目的setting.py配置 : DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 默认用mysql 'NAME': 'bk', # 数据库名 (默认与APP_ID相同) 'USER': 'root', # 你的数据库user 'PASSWORD': 'root', # 你的数据库password 'HOST':

  • Django数据库表反向生成实例解析

    本文我们研究下如何在django中反向生成mysql model代码,接下来我们看看具体介绍. 我们在展示django ORM反向生成之前,我们先说一下怎么样正向生成代码. 正向生成,指的是先创建model.py文件,然后通过django内置的编译器,在数据库如mysql中创建出符合model.py的表. 反向生成,指的是先在数据库中create table,然后通过django内置的编译器,生成model代码. 1.准备工作 创建django工程以及app 创建django工程,名字是hell

  • Django用数据库表反向生成models类知识点详解

    Django根据已有数据库表反向生成models类 一. 创建一个Django项目 django-admin startproject 'xxxx' 二.修改settings文件 在setting里面设置你要连接的数据库名称,地址,账号密码之类的信息,和创建新项目的时候一致 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'djangodemo', # 数据库名称 'USER': 'root', '

随机推荐