django如何根据现有数据库表生成model详解
作者:ChenWenKen 发布时间:2024-01-17 02:29:21
标签:django,生成,model
题记:django如果要并和原有的数据库,那么就需要把现有数据库的表写入model.py中。
一,在setting.py中配置好连接数据库的参数
在setting中的DATABASESZ中配置默认参数,并在INSTALLED_APPS中导入模块名。
DATABASES = {
'default':
{
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'jljupcs', # 数据库名称
'HOST': '127.0.0.1', # 数据库地址,本机 ip 地址 127.0.0.1
'PORT': 3306, # 端口
'USER': 'root', # 数据库用户名
'PASSWORD': '', # 数据库密码
}
}
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'conversion',
]
在主项目目录下导入pymysql
import pymysql
pymysql.install_as_MySQLdb()
二,打开cmd或pycharm的Terminal输入命令
输入命令:
python manage.py inspectdb > [项目路径]/models.py
在cmd中输入命令:
打开pycharm终端输入命令:
最后在models.py中自动创建了数据库表对应的类。
三,managed = False 删除或改为 managed = True
修改managed让之后修改models即可对数据库进行操作,在终端输入:
python manage.py inspectdb
提示如果你想让Django创建、修改和删除表,请删除’ managed = False '行
四,执行迁移
在终端输入:
python manage.py makemigrations
python manage.py migrate
补充:Django根据数据库表反向生成Model
用过Django的人应该都熟悉下面两条命令:
# 将Model的改动生成文件
python manage.py make migrations # 此时数据库中还不会生效
# 提交改动
python manage.py migrate # 此时数据库就会自动生成我们Model对应的数据表了
上面两条命令都是作用于全局的,但是如果我们只想改动的app下面的Model或者某个文件中的Model,那就需要指定appname和filename:
# 生成指定app下面的改动文件
python manage.py makemigrations appname
# 提交指定app下面指定的改动文件
python manage.py migrate appname filename
既然有根据Model自动生成数据库表的命令,那么肯定就有根据数据库表反向生成Model的命令
python manage.py inspectdb # 使用这条命令,会根据设置的数据库中的表在自动生成对应的Model代码,并打印出来
当然也可以直接将打印的代码直接导入到指定的Model文件中
python manage.py inspectdb > student/models.py # 前提是创建了app(student)并且在setting.py文件中注册过
配置了多个数据库,则还可以配置数据库别名来指定根据哪个库中的表来生成Model
python manage.py inspectdb --database default >student/models.py # default是默认的别名
将指定的表生成对应的Model
python manage.py inspectdb --database default table1 table2 >student/models.py
来源:https://blog.csdn.net/qq_38335295/article/details/123871683


猜你喜欢
- 1、将下载好的mysql压缩包解压到安装目录下2、新建文件 my.ini,放置到mysql安装目录下,内容如下:[mysql]# 设置mys
- 1.match() 从开始位置开始匹配 2.search() 任意位置匹配,如果有多个匹配,只返回第一个 3.finditer() 返回所有
- 一、开发工具Python版本:3.6.4相关模块:DecryptLogin模块;argparse模块;以及一些python自带的模块。二、环
- 本文实例讲述了Python企业编码生成系统之系统主要函数设计。分享给大家供大家参考,具体如下:一 主要函数功能描述函数功能mkdir判断保存
- Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到
- PHP 中文工具类,支持汉字转拼音、拼音分词、简繁互转。PHP Chinese Tool class, support Chinese pi
- 前言在机器学习中,我们会经常和矩阵打交道。在矩阵的运算中,python默认的输出是浮点数,但是如果我们想要矩阵的元素以分数的形式显示,可以通
- 本文实例讲述了Python基于pandas实现json格式转换成dataframe的方法。分享给大家供大家参考,具体如下:# -*- cod
- tensorflow官方提供了3种方法来读取数据:预加载数据(preloaded data):在TensorFlow图中定义常量或变量来保存
- 一天不小心把ROOT的权限改到最小了(只能登录,什么都做不了),这可急死我了.重装的话太麻烦,而且里面有很多的用户,一个个重新弄不知道到什么
- var obj=document.getElementById("txtUserID") var range=obj.c
- 今天有点新的与大家分享,关于selenium与xpath之间爬数据获取指定位置的时候,方式不一样哦。详情可以看我的代码,以b站来看好吧:查看
- MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。1、需要以root用户身份登陆才可
- 除法啰嗦的,不仅是python。整数除以整数看官请在启动idle之后,练习下面的运算:>>> 2/50>>&g
- --------------------------------------------------------- 正则收藏 手机号码: $
- 如下所示:# coding: utf-8import osimport psutilimport timedef write_pid():
- 1. 官方代码FUSE_MODULESTORCH.AO.QUANTIZATION.FUSE_MODULES的源代码2. fuse_modul
- ConfigParser库的使用及遇到的坑背景:这几天想在接口测试中增加logging打印功能,在testerHome正好发现有人分享自己的
- 元组Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并
- code:f = open('yesterday','r',encoding='utf-8'