django如何根据现有数据库表生成model详解
目录
- 一,在setting.py中配置好连接数据库的参数
- 二,打开cmd或pycharm的Terminal输入命令
- 三,managed = False 删除或改为 managed = True
- 四,执行迁移
- 补充: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
总结
到此这篇关于django如何根据现有数据库表生成model的文章就介绍到这了,更多相关django生成model内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)