最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django models.py應(yīng)用實(shí)現(xiàn)過(guò)程詳解

 更新時(shí)間:2019年07月29日 15:15:02   作者:Blue·Sky  
這篇文章主要介紹了Django models.py應(yīng)用實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

編寫(xiě) models.py 文件

from django.db import models
# Create your models here.
class User_info(models.Model):
 username = models.CharField(max_length=25,verbose_name='用戶名')
 password = models.CharField(max_length=25,verbose_name='密碼')
 age = models.IntegerField()
 e_mail = models.EmailField()
 create_time = models.DateTimeField()
 update_time = models.DateTimeField()

字段類型

一般數(shù)據(jù)庫(kù)中字段類型大概5種(字符串/數(shù)字/浮點(diǎn)型/時(shí)間類型/布爾類型),但Django為了在后臺(tái)admin中可以操作數(shù)據(jù)庫(kù),同時(shí)為了限制在admin中對(duì)數(shù)據(jù)庫(kù)的無(wú)效操作,Model中設(shè)置了很多種數(shù)據(jù)類型。

1、models.AutoField  自增列=int(11)
  如果沒(méi)有的話,默認(rèn)會(huì)生成一個(gè)名稱為id的列,如果要顯示的定義一個(gè)自增列,必須把該列設(shè)置為主鍵(primary_key=True)
2、models.CharField  字符串類型字段 必須加max_length參數(shù)
3、models.BooleanField 布爾類型字段=tinyint(1) 不能為空,Blank=True
4、models.ComaSeparatedIntegerField  用逗號(hào)分割的數(shù)字類型=varchar 繼承CharField,所以必須加max_lenght參數(shù)
5、models.DateField  日期字段類型date
  參數(shù)auto_now=True表示每次更新都會(huì)更新這個(gè)時(shí)間;參數(shù)auto_now_add表示只是第一次創(chuàng)建時(shí)添加,之后的更新不再改變
6、models.DateTimeField  日期字段類型datetime 同DateField的參數(shù)
7、models.Decimal  十進(jìn)制小數(shù)類型=decimal
  必須指定整數(shù)位max_digits和小數(shù)位decimal_places
8、models.EmailField  字符串類型(正則表達(dá)式郵箱)=varchar 對(duì)字符串進(jìn)行正則表達(dá)式驗(yàn)證
9、models.FloatField  浮點(diǎn)類型=double
10、models.IntegerField  整形
11、models.BigIntegerField 長(zhǎng)整形
  integer_field_ranges = {
    'SmallIntegerField': (-32768, 32767),
    'IntegerField': (-2147483648, 2147483647),
    'BigIntegerField': (-9223372036854775808, 9223372036854775807),
    'PositiveSmallIntegerField': (0, 32767),
    'PositiveIntegerField': (0, 2147483647),
  }
12、models.IPAddressField  字符串類型(ip4正則表達(dá)式)
13、models.GenericIPAddressField  字符串類型(ip4和ip6是可選的)
  參數(shù)protocol可以是:both、ipv4、ipv6 驗(yàn)證時(shí),會(huì)根據(jù)設(shè)置進(jìn)行報(bào)錯(cuò)
14、models.NullBooleanField  允許為空的布爾類型
15、models.PositiveIntegerFiel  正Integer
16、models.PositiveSmallIntegerField  正smallInteger
17、models.SlugField  減號(hào)、下劃線、字母、數(shù)字
18、models.SmallIntegerField  數(shù)字
  數(shù)據(jù)庫(kù)中的字段有:tinyint、smallint、int、bigint
19、models.TextField  字符串=longtext
20、models.TimeField  時(shí)間 HH:MM[:ss[.uuuuuu]]
21、models.URLField  字符串類型,地址正則表達(dá)式
22、models.BinaryField 二進(jìn)制
23、models.ImageField 圖片
24、models.FilePathField 文件

執(zhí)行命令:

# 執(zhí)行以下命令,記錄我們對(duì)models.py的所有改動(dòng)
python manage.py makemigrations

執(zhí)行后生成如下文件

# Generated by Django 2.1.2 on 2018-12-11 11:39
from django.db import migrations, models
class Migration(migrations.Migration):
 initial = True
 dependencies = [
 ]
 operations = [
  migrations.CreateModel(
   name='User_info',
   fields=[
    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
    ('username', models.CharField(max_length=25, verbose_name='用戶名')),
    ('password', models.CharField(max_length=25, verbose_name='密碼')),
    ('age', models.IntegerField()),
    ('e_mail', models.EmailField(max_length=254)),
    ('create_time', models.DateTimeField()),
    ('update_time', models.DateTimeField()),
   ],
  ),
 ]

代碼如下

#如下 這條命令的主要作用就是把這些改動(dòng)作用到數(shù)據(jù)庫(kù)也就是執(zhí)行migrations里面新改動(dòng)的遷移文件更新數(shù)據(jù)庫(kù),比如創(chuàng)建數(shù)據(jù)表,或者增加字段屬性
python manage.py migrate

執(zhí)行該命令后 數(shù)據(jù)庫(kù)生成如下數(shù)據(jù)庫(kù)表

如上圖得到的表名 是以應(yīng)用名命名的,但是不是我們想要的怎么辦了,增加兩行代碼

如下:

from django.db import models
# Create your models here.
from django.db import models
class User_info(models.Model):
 username = models.CharField(max_length=25,verbose_name='用戶名')
 password = models.CharField(max_length=25,verbose_name='密碼')
 age = models.IntegerField()
 e_mail = models.EmailField()
 create_time = models.DateTimeField()
 update_time = models.DateTimeField()
 class Meta:
  db_table = 'User_info'

修改代碼重新執(zhí)行

# 執(zhí)行以下命令,記錄我們對(duì)models.py的所有改動(dòng)
python manage.py makemigrations

此時(shí)新生成了 一個(gè)migrations 文件

此時(shí)可以針對(duì) 新的文件進(jìn)行執(zhí)行

python manage.py migrate ModelMysql 0002_auto_20181211_1150

查看數(shù)據(jù)庫(kù)表得到新建的數(shù)據(jù)表

python manage.py makemigrations這個(gè)命令是記錄我們對(duì)models.py的所有改動(dòng),并且將這個(gè)改動(dòng)遷移到migrations這個(gè)文件下生成一個(gè)文件例如:0001文件,如果你接下來(lái)還要進(jìn)行改動(dòng)的話可能生成就是另外一個(gè)文件不一定都是0001文件,但是這個(gè)命令并沒(méi)有作用到數(shù)據(jù)庫(kù),這個(gè)剛剛我們?cè)谏厦娴牟僮鬟^(guò)程之后已經(jīng)看到了。

而當(dāng)我們執(zhí)行python manage.py migrate 命令時(shí) 這條命令的主要作用就是把這些改動(dòng)作用到數(shù)據(jù)庫(kù)也就是執(zhí)行migrations里面新改動(dòng)的遷移文件更新數(shù)據(jù)庫(kù),比如創(chuàng)建數(shù)據(jù)表,或者增加字段屬性

另外一個(gè)需要注意的是這兩個(gè)命令默認(rèn)情況下是作用于全局,也就是對(duì)所有最新更改的models或者migrations下面的遷移文件進(jìn)行對(duì)應(yīng)的操作,如果要想僅僅對(duì)部分app進(jìn)行作用的話 則執(zhí)行如下命令:

python manage.py makemigrations appname
python manage.py migrate appname

如果要想精確到某一個(gè)遷移文件則可以使用:

python manage.py migrate appname 文件名

遇到問(wèn)題:

1、

No migrations to apply(django不能創(chuàng)建數(shù)據(jù)庫(kù)中的表的問(wèn)題)

如下圖:

解決辦法:

第一步:

刪除該app名字下的migrations下除__init__.py外的文件。

第二步:

進(jìn)入數(shù)據(jù)庫(kù),找到django_migrations的表,刪除該app名字的所有記錄。

第三步:執(zhí)行下面這兩條命令:(在項(xiàng)目目錄下)

python manage.py makemigrations

python manage.py migrate

原因:

django_migrations表記錄著數(shù)據(jù)庫(kù)的對(duì)應(yīng)表的修改記錄。

每次修改后,都執(zhí)行第三步的命令,然后在第一步的文件夾下生成修改的文件,django_migrations表記錄修改的變更過(guò)程。

2、

Warning: (3135, "'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.")
result = self._query(query)

修改options 如下:

# MySQL adil 密碼:helloyyj
DATABASES = {
 'default':{
  'ENGINE':'django.db.backends.mysql',
  'HOST':'127.0.0.1',
  'PORT':'3306',
  'NAME':'pyweb', # 數(shù)據(jù)庫(kù)名
  'USER':'adil',
  'PASSWORD':'helloyyj',
  'OPTIONS':{
   'sql_mode': 'traditional'
  },
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python的兩種異步HTTP請(qǐng)求詳解

    Python的兩種異步HTTP請(qǐng)求詳解

    這篇文章主要介紹了Python的兩種異步HTTP請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python 導(dǎo)入文件過(guò)程圖解

    Python 導(dǎo)入文件過(guò)程圖解

    這篇文章主要介紹了Python 導(dǎo)入文件過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python中下劃線的使用方法

    Python中下劃線的使用方法

    這篇文章主要介紹了Python中下劃線的使用方法,是為python編程學(xué)習(xí)中的基本知識(shí),需要的朋友可以參考下
    2015-03-03
  • Python中集合的創(chuàng)建及常用函數(shù)的使用詳解

    Python中集合的創(chuàng)建及常用函數(shù)的使用詳解

    這篇文章主要為大家詳細(xì)介紹了Python中集合的創(chuàng)建、使用和遍歷,集合常見(jiàn)的操作函數(shù),集合與列表,元組,字典的嵌套,感興趣的小伙伴可以了解一下
    2022-06-06
  • 淺談pandas中DataFrame關(guān)于顯示值省略的解決方法

    淺談pandas中DataFrame關(guān)于顯示值省略的解決方法

    下面小編就為大家分享一篇淺談pandas中DataFrame關(guān)于顯示值省略的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python Web程序部署到Ubuntu服務(wù)器上的方法

    Python Web程序部署到Ubuntu服務(wù)器上的方法

    在本文記錄了我在Ubuntu中部署Flask Web站點(diǎn)的過(guò)程, 其中包括用戶創(chuàng)建、代碼獲取、Python3環(huán)境的安裝、虛擬環(huán)境設(shè)置、uWSGI啟動(dòng)程序設(shè)置,并將Nginx作為前端反向代理,需要的朋友參考下吧
    2018-02-02
  • Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式

    Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式

    這篇文章主要介紹了Python異常捕獲以及簡(jiǎn)單錯(cuò)誤日志生成方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 淺談Python的Django框架中的緩存控制

    淺談Python的Django框架中的緩存控制

    這篇文章主要介紹了Python的Django框架中的緩存控制,包括Vary頭部以外的其他頭部使用等,需要的朋友可以參考下
    2015-07-07
  • pandas DataFrame.shift()函數(shù)的具體使用

    pandas DataFrame.shift()函數(shù)的具體使用

    本文主要介紹了pandas DataFrame.shift()函數(shù)的使用,pandas DataFrame.shift()函數(shù)可以把數(shù)據(jù)移動(dòng)指定的位數(shù),有需要了解pandas DataFrame.shift()用法的朋友可以參考一下
    2021-05-05
  • python3編碼問(wèn)題匯總

    python3編碼問(wèn)題匯總

    本文給通過(guò)一個(gè)具體的編碼問(wèn)題的解決辦法,給大家詳細(xì)分享了python中的編碼問(wèn)題的來(lái)龍去脈,非常的細(xì)致全面,有需要的小伙伴可以參考下
    2016-09-09

最新評(píng)論

凉山| 伊吾县| 肇庆市| 马龙县| 东光县| 上饶县| 洱源县| 乌海市| 安塞县| 九寨沟县| 天柱县| 汤阴县| 郧西县| 平果县| 侯马市| 罗山县| 东兰县| 隆德县| 毕节市| 灵石县| 宜州市| 金平| 安阳县| 丹凤县| 华坪县| 志丹县| 洛阳市| 梓潼县| 安新县| 福鼎市| 喀喇| 德保县| 元江| 内黄县| 泸水县| 罗定市| 丰宁| 仁布县| 和田市| 和田市| 石首市|