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

您的位置:首頁技術文章
文章詳情頁

Mysql數據庫反向生成Django里面的models指令方式

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

python manage.py inspectdb

python manage.py inspect > app/models.py

補充知識:Django框架MySQL數據庫到models模型的映射關系

一、前言

我的數據庫已經用MySQL Workbench設計好了,也插入了一些測試數據,現在開始在Django中設計models模型。本以為順風順水,沒想到也遇到一些bug,現在記錄一下踩坑填坑過程。

二、設計models模型

1. 如果數據庫中表的數量比較多,可以先導出,然后查看對應表的字段,根據不同表設計不同的models類,根據同一張表的不同字段設計類屬性。

用MySQL Workbench導出數據庫操作:

Mysql數據庫反向生成Django里面的models指令方式

2. 打開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,也是外鍵,關聯了visitors表的user_id主鍵

3. 設計models類

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(’購買的積分’,default=0) time_credits_buy = models.DateTimeField(’購買的時間’,auto_now_add=True) credits_before_day = models.IntegerField(’前一天簽到的積分’,default=0) time_sign_before_day = models.DateTimeField(’前一天簽到的時間’,default=None) class Meta(): # credits,為數據庫中的表名 db_table = ’credits’

注意:

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

Mysql數據庫反向生成Django里面的models指令方式

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

Mysql數據庫反向生成Django里面的models指令方式

4. time_credits_buy = models.DateTimeField(’購買的時間’,auto_now_add=True),time_credits_buy類屬性是時間類型,數據庫中credits表對應的也是時間類型。

注意,剛開始,我的數據庫中把 time_credits_buy 字段設置為varchar(64)類型,而models模型中設置為時間類型,兩邊的類型不一致出現bug,如下圖所示:

Mysql數據庫反向生成Django里面的models指令方式

特別注意,數據庫中的字段類型,一定要和models定義的類屬性類型一致,否則報錯,有的時候很難發現bug

三、Django自動生成models

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

如果數據庫表已經存在,執行命令,可以自動生成Models模型,實現models與數據表的映射

以上這篇Mysql數據庫反向生成Django里面的models指令方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 久久福利资源站免费观看i 久久高清精品 | 国产日韩一区二区三区 | 香港免费毛片 | 日本成人中文字幕 | 亚洲观看视频 | 欧美日本在线一区二区三区 | 国产亚洲一区在线 | 久久免费视频网 | 成人的天堂 | 在线观看一区二区三区四区 | 欧美日韩乱国产 | 色青青草原桃花久久综合 | 日本a级毛片免费观看 | 色丁香久久 | 午夜精品同性女女 | 国产精品国产三级国产专 | 国产精品免费精品自在线观看 | 看一级毛片 | 日韩视频免费一区二区三区 | 5级做人爱c视版免费视频 | 久久精品国产亚洲7777小说 | 国产三级手机在线 | 欧美亚洲欧美区 | 久久久久久久国产精品 | 欧美成人怡红院在线观看 | 欧美日产国产亚洲综合图区一 | 天天干亚洲 | 自拍偷自拍亚洲精品一区 | 国产精品欧美亚洲韩国日本不卡 | 亚洲一区二区三区四区五区六区 | 国产精品视频免费一区二区三区 | 国产经典一区 | 国产一区二区三区四区五区tv | 国产女人自拍 | 亚洲国产精品久久日 | aaa在线| 美国三级视频 | 欧美一区二区二区 | 目韩一区二区三区系列片丶 | 亚洲国产成人久久99精品 | 亚洲在线免费视频 |