成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Django ORM

BlackHole1 / 3493人閱讀

摘要:對象關(guān)系映射,簡稱模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。在業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間充當(dāng)了橋梁的作用。每個(gè)字段被指定為一個(gè)類屬性,每個(gè)屬性映射到一個(gè)數(shù)據(jù)庫列。字符類型,必須提供參數(shù),表示字符長度。

對象關(guān)系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。

簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中。

ORM在業(yè)務(wù)邏輯層和數(shù)據(jù)庫層之間充當(dāng)了橋梁的作用。

一、如何在Django項(xiàng)目中使用mysql數(shù)據(jù)庫? 1. 在Django項(xiàng)目的settings.py文件中,配置數(shù)據(jù)庫連接信息:
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "你的數(shù)據(jù)庫名稱",  # 需要自己手動創(chuàng)建數(shù)據(jù)庫
        "USER": "數(shù)據(jù)庫用戶名",
        "PASSWORD": "數(shù)據(jù)庫密碼",
        "HOST": "數(shù)據(jù)庫IP",
        "POST": 3306
    }
}
2. 在Django項(xiàng)目的__init__.py文件中寫如下代碼,告訴Django使用pymysql模塊連接MySQL數(shù)據(jù)庫:
import pymysql

pymysql.install_as_MySQLdb()
二、Django中的映射關(guān)系

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

first_name 和 last_name 是模型的字段。每個(gè)字段被指定為一個(gè)類屬性,每個(gè)屬性映射到一個(gè)數(shù)據(jù)庫列。
上面的 Person 模型將會像這樣創(chuàng)建一個(gè)數(shù)據(jù)庫表:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

一些說明:

表myapp_person的名稱是自動生成的,如果你要自定義表名,需要在model的Meta類中指定 db_table 參數(shù),強(qiáng)烈建議使用小寫表名,特別是使用MySQL作為后端數(shù)據(jù)庫時(shí)。
id字段是自動添加的,如果你想要指定自定義主鍵,只需在其中一個(gè)字段中指定 primary_key=True 即可。如果Django發(fā)現(xiàn)你已經(jīng)明確地設(shè)置了Field.primary_key,它將不會添加自動ID列。

三、常用字段
字段名 說明
AutoField int自增列,需填入?yún)?shù) primary_key=True。當(dāng)model中如果沒有自增列,則自動會創(chuàng)建一個(gè)列名為id的列。
IntegerField 整數(shù)類型,范圍在 -2147483648 to 2147483647。
CharField 字符類型,必須提供max_length參數(shù), max_length表示字符長度。
DateField 日期字段,日期格式 YYYY-MM-DD,相當(dāng)于Python中的datetime.date()實(shí)例。
DateTimeField 日期時(shí)間字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相當(dāng)于Python中的datetime.datetime()實(shí)例。
四、其他不常用字段
字段名 說明
BigAutoField(AutoField) - bigint自增列,必須填入?yún)?shù) primary_key=True 注:當(dāng)model中如果沒有自增列,則自動會創(chuàng)建一個(gè)列名為id的列
SmallIntegerField(IntegerField) - 小整數(shù) -32768 ~ 32767
PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) - 正小整數(shù) 0 ~ 32767
PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) - 正整數(shù) 0 ~ 2147483647
BigIntegerField(IntegerField) - 長整型(有符號的) -9223372036854775808 ~ 9223372036854775807
BooleanField(Field) - 布爾值類型
NullBooleanField(Field): - 可以為空的布爾值
TextField(Field) -文本類型
EmailField(CharField) - 字符串類型,Django Admin以及ModelForm中提供驗(yàn)證機(jī)制
IPAddressField(Field) - 字符串類型,Django Admin以及ModelForm中提供驗(yàn)證 IPV4 機(jī)制
GenericIPAddressField(Field) - 字符串類型,Django Admin以及ModelForm中提供驗(yàn)證 Ipv4和Ipv6 - 參數(shù):protocol,用于指定Ipv4或Ipv6, "both","ipv4","ipv6"unpack_ipv4, 如果指定為True,則輸入::ffff:192.0.2.1時(shí)候,可解析為192.0.2.1,開啟此功能,需要protocol="both"
URLField(CharField) - 字符串類型,Django Admin以及ModelForm中提供驗(yàn)證 URL
SlugField(CharField) - 字符串類型,Django Admin以及ModelForm中提供驗(yàn)證支持 字母、數(shù)字、下劃線、連接符(減號)
CommaSeparatedIntegerField(CharField) - 字符串類型,格式必須為逗號分割的數(shù)字
UUIDField(Field) - 字符串類型,Django Admin以及ModelForm中提供對UUID格式的驗(yàn)證
FilePathField(Field) - 字符串,Django Admin以及ModelForm中提供讀取文件夾下文件的功能 - 參數(shù):path: 文件夾路徑;match=None:正則匹配;recursive=False:遞歸下面的文件夾;allow_files=True:允許文件;allow_folders=False:允許文件夾;
FileField(Field) - 字符串,路徑保存在數(shù)據(jù)庫,文件上傳到指定目錄 - 參數(shù):upload_to = "" :傳文件的保存路徑;storage = None :存儲組件,默認(rèn)django.core.files.storage.FileSystemStorage
ImageField(FileField) - 字符串,路徑保存在數(shù)據(jù)庫,文件上傳到指定目錄 - 參數(shù):upload_to = "":上傳文件的保存路徑;
storage = None:存儲組件,默認(rèn)django.core.files.storage.FileSystemStorage;width_field=None, 上傳圖片的高度保存的數(shù)據(jù)庫字段名(字符串;height_field=None:上傳圖片的寬度保存的數(shù)據(jù)庫字段名(字符串);
DateField(DateTimeCheckMixin, Field) - 日期格式 YYYY-MM-DD
TimeField(DateTimeCheckMixin, Field) - 時(shí)間格式 HH:MM[:ss[.uuuuuu]]
DurationField(Field) - 長整數(shù),時(shí)間間隔,數(shù)據(jù)庫中按照bigint存儲,ORM中獲取的值為datetime.timedelta類型
FloatField(Field) - 浮點(diǎn)型
DecimalField(Field) - 10進(jìn)制小數(shù) - 參數(shù):max_digits:小數(shù)總長度;decimal_places:小數(shù)位長度
BinaryField(Field) - 二進(jìn)制類型

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42728.html

相關(guān)文章

  • Tornado vs Django選型分析

    摘要:前言項(xiàng)目中開發(fā)的幾個(gè)服務(wù)一直使用作為服務(wù)器,本人也曾提出過疑問,為什么是,得到的答案是比較,,,的并發(fā)性能最好,而且最為輕量級。的賣點(diǎn)是超高的開發(fā)效率,其性能擴(kuò)展有限的性能表現(xiàn)前兩天有寫一篇的帖子傳送門使用對鑒權(quán)接口加壓,看的性能表現(xiàn)。 前言 項(xiàng)目中開發(fā)的幾個(gè)服務(wù)一直使用tornado作為http服務(wù)器,本人也曾提出過疑問,為什么是tornado,得到的答案是比較tornado,fla...

    Arno 評論0 收藏0
  • Django Model View Template 之間的簡單交互 (二)

    摘要:當(dāng)然還有其他高級的使用,日后再說完整的用戶名郵箱聯(lián)系地址留言信息用戶留言信息使用之前已經(jīng)定義好了數(shù)據(jù)模型的字段元數(shù)據(jù)方法等。 前言 接續(xù)前文,上一篇文章主要涉及了 Django 項(xiàng)目的基礎(chǔ)配置等,這篇主要涉及數(shù)據(jù)庫相關(guān)的 ORM ,也就是 Django 中的 Model 的使用,MVT 三層之間的交互 教程基本都是東拼西湊的,防止有些東西表述不準(zhǔn)確,因?yàn)槲抑皩?JavaScript ...

    Coding01 評論0 收藏0
  • Python_Django

    摘要:為了將代碼規(guī)范,約定俗成將視圖放置在項(xiàng)目或應(yīng)用程序目錄中命名為文件中。必須接受字段表示字符串長度不能超過該值,默認(rèn)的標(biāo)簽最常用的。例,自動添加發(fā)布時(shí)間。以字符串的形式存在,默認(rèn)最大長度,可以通過參數(shù)設(shè)置。用于保存通用唯一識別碼的字段。 MVC 大部分開發(fā)語言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模塊之間的耦合性,方便變更,更容易重構(gòu)代碼,最大程度上實(shí)現(xiàn)代碼的重...

    BearyChat 評論0 收藏0
  • web.py中實(shí)現(xiàn)類似Django中的ORM的查詢效果

    摘要:中的對象查詢框架自帶了,實(shí)現(xiàn)了一些比較強(qiáng)大而且方便的查詢功能,這些功能和表無關(guān)。實(shí)際的模型類比如類定義后,不實(shí)例話的情況下就要具備這樣的查詢效果。 Django中的對象查詢 Django框架自帶了ORM,實(shí)現(xiàn)了一些比較強(qiáng)大而且方便的查詢功能,這些功能和表無關(guān)。比如下面這個(gè)例子: class Question(models.Model): question_text = mode...

    bladefury 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<