国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式

瀏覽:9日期:2023-10-15 07:54:34

python manage.py inspectdb

python manage.py inspect > app/models.py

補(bǔ)充知識(shí):Django框架MySQL數(shù)據(jù)庫(kù)到models模型的映射關(guān)系

一、前言

我的數(shù)據(jù)庫(kù)已經(jīng)用MySQL Workbench設(shè)計(jì)好了,也插入了一些測(cè)試數(shù)據(jù),現(xiàn)在開(kāi)始在Django中設(shè)計(jì)models模型。本以為順風(fēng)順?biāo)瑳](méi)想到也遇到一些bug,現(xiàn)在記錄一下踩坑填坑過(guò)程。

二、設(shè)計(jì)models模型

1. 如果數(shù)據(jù)庫(kù)中表的數(shù)量比較多,可以先導(dǎo)出,然后查看對(duì)應(yīng)表的字段,根據(jù)不同表設(shè)計(jì)不同的models類(lèi),根據(jù)同一張表的不同字段設(shè)計(jì)類(lèi)屬性。

用MySQL Workbench導(dǎo)出數(shù)據(jù)庫(kù)操作:

Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式

2. 打開(kāi)credits.sql文件,credits表的信息是:

CREATE TABLE `credits` ( `user_id` varchar(64) NOT NULL, `credits_total` int(64) DEFAULT ’0’, `credits_buy` int(64) DEFAULT ’0’, `time_credits_buy` datetime(6) DEFAULT NULL, `credits_before_day` int(32) DEFAULT ’0’, `time_sign_before_day` datetime(6) DEFAULT NULL, PRIMARY KEY (`user_id`), CONSTRAINT `credits_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `visitors` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;

其中,credits表字段信息是:user_id,credits_total,credits_buy,time_credits_buy,credits_before_day,time_sign_before_day

主鍵是:user_id,也是外鍵,關(guān)聯(lián)了visitors表的user_id主鍵

3. 設(shè)計(jì)models類(lèi)

from django.db import models # 積分信息class Credits(models.Model): # id = models.IntegerField(’id主鍵’, primary_key=True, auto_created=True) # user_id = models.ForeignKey(Visitors,on_delete=models.CASCADE,primary_key=True) user = models.ForeignKey(Visitors,on_delete=models.CASCADE,primary_key=True) credits_total = models.IntegerField(’總積分’,default=0) credits_buy = models.IntegerField(’購(gòu)買(mǎi)的積分’,default=0) time_credits_buy = models.DateTimeField(’購(gòu)買(mǎi)的時(shí)間’,auto_now_add=True) credits_before_day = models.IntegerField(’前一天簽到的積分’,default=0) time_sign_before_day = models.DateTimeField(’前一天簽到的時(shí)間’,default=None) class Meta(): # credits,為數(shù)據(jù)庫(kù)中的表名 db_table = ’credits’

注意:

注釋中,# user_id = models.ForeignKey(Visitors,on_delete=models.CASCADE,primary_key=True),是我最開(kāi)始寫(xiě)的user_id類(lèi)屬性,存在問(wèn)題,如下圖所示:

Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式

解決方案:把user_id 改成user即可,user = models.ForeignKey(Visitors,on_delete=models.CASCADE,primary_key=True),正確如下圖:

Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式

4. time_credits_buy = models.DateTimeField(’購(gòu)買(mǎi)的時(shí)間’,auto_now_add=True),time_credits_buy類(lèi)屬性是時(shí)間類(lèi)型,數(shù)據(jù)庫(kù)中credits表對(duì)應(yīng)的也是時(shí)間類(lèi)型。

注意,剛開(kāi)始,我的數(shù)據(jù)庫(kù)中把 time_credits_buy 字段設(shè)置為varchar(64)類(lèi)型,而models模型中設(shè)置為時(shí)間類(lèi)型,兩邊的類(lèi)型不一致出現(xiàn)bug,如下圖所示:

Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式

特別注意,數(shù)據(jù)庫(kù)中的字段類(lèi)型,一定要和models定義的類(lèi)屬性類(lèi)型一致,否則報(bào)錯(cuò),有的時(shí)候很難發(fā)現(xiàn)bug

三、Django自動(dòng)生成models

>>> python manage.py inspectdb > app/models.py

如果數(shù)據(jù)庫(kù)表已經(jīng)存在,執(zhí)行命令,可以自動(dòng)生成Models模型,實(shí)現(xiàn)models與數(shù)據(jù)表的映射

以上這篇Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 91成人影院| 99视频在线看| 亚洲国产精品久久久天堂 | 免费区一级欧美毛片 | 日韩在线一区二区三区 | 日本在线观看网址 | 国产精品久久久久久久久久一区 | 99国产国人青青视频在线观看 | 欧洲97色综合成人网 | 精品国产区 | 亚洲国产精品成人久久 | 亚洲一级毛片在线播放 | 欧美日韩一区二区在线观看视频 | 九九精品免视频国产成人 | 欧美人成片免费看视频不卡 | 国产精品二区在线 | 久久精品视频免费在线观看 | 91亚洲精品国产第一区 | 国产欧美日韩一区二区三区在线 | 91久久精品青青草原伊人 | 99在线观看视频 | 国产免费一区二区三区在线观看 | 色拍拍噜噜噜aⅴ在线观看 色青青草原桃花久久综合 色婷婷91 | 色综合色狠狠天天久久婷婷基地 | 午夜精品久久久久久毛片 | 久久综合久久久久 | 久久国产视频一区 | 久久久青草 | 老师张开腿让我捅 | 国产成人精品天堂 | 欧美亚洲国产精品久久 | 色成人亚洲 | 孕妇交| 久久91精品国产91久久 | 午夜怡红院 | 美女张开腿让男人桶的 视频 | 欧美一区二区三区播放 | 日本欧美不卡一区二区三区在线 | 加勒比色综合久久久久久久久 | 亚洲qingse中文久久网 | 久久久成人网 |