成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

Django ORM

BlackHole1 / 3543人閱讀

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

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

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

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

一、如何在Django項(xiàng)目中使用mysql數(shù)據(jù)庫(kù)? 1. 在Django項(xiàng)目的settings.py文件中,配置數(shù)據(jù)庫(kù)連接信息:
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "你的數(shù)據(jù)庫(kù)名稱(chēng)",  # 需要自己手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)
        "USER": "數(shù)據(jù)庫(kù)用戶名",
        "PASSWORD": "數(shù)據(jù)庫(kù)密碼",
        "HOST": "數(shù)據(jù)庫(kù)IP",
        "POST": 3306
    }
}
2. 在Django項(xiàng)目的__init__.py文件中寫(xiě)如下代碼,告訴Django使用pymysql模塊連接MySQL數(shù)據(jù)庫(kù):
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è)類(lèi)屬性,每個(gè)屬性映射到一個(gè)數(shù)據(jù)庫(kù)列。
上面的 Person 模型將會(huì)像這樣創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)表:

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

一些說(shuō)明:

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/42728.html

相關(guān)文章

  • Tornado vs Django選型分析

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

    Arno 評(píng)論0 收藏0
  • Django Model View Template 之間的簡(jiǎn)單交互 (二)

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

    Coding01 評(píng)論0 收藏0
  • Python_Django

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

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

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

    bladefury 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<