摘要:對象關系映射,簡稱模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。在業務邏輯層和數據庫層之間充當了橋梁的作用。每個字段被指定為一個類屬性,每個屬性映射到一個數據庫列。字符類型,必須提供參數,表示字符長度。
對象關系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。
簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。
ORM在業務邏輯層和數據庫層之間充當了橋梁的作用。
一、如何在Django項目中使用mysql數據庫? 1. 在Django項目的settings.py文件中,配置數據庫連接信息:DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "你的數據庫名稱", # 需要自己手動創建數據庫 "USER": "數據庫用戶名", "PASSWORD": "數據庫密碼", "HOST": "數據庫IP", "POST": 3306 } }2. 在Django項目的__init__.py文件中寫如下代碼,告訴Django使用pymysql模塊連接MySQL數據庫:
import pymysql pymysql.install_as_MySQLdb()二、Django中的映射關系
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 是模型的字段。每個字段被指定為一個類屬性,每個屬性映射到一個數據庫列。
上面的 Person 模型將會像這樣創建一個數據庫表:
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 參數,強烈建議使用小寫表名,特別是使用MySQL作為后端數據庫時。
id字段是自動添加的,如果你想要指定自定義主鍵,只需在其中一個字段中指定 primary_key=True 即可。如果Django發現你已經明確地設置了Field.primary_key,它將不會添加自動ID列。
字段名 | 說明 |
---|---|
AutoField | int自增列,需填入參數 primary_key=True。當model中如果沒有自增列,則自動會創建一個列名為id的列。 |
IntegerField | 整數類型,范圍在 -2147483648 to 2147483647。 |
CharField | 字符類型,必須提供max_length參數, max_length表示字符長度。 |
DateField | 日期字段,日期格式 YYYY-MM-DD,相當于Python中的datetime.date()實例。 |
DateTimeField | 日期時間字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相當于Python中的datetime.datetime()實例。 |
字段名 | 說明 |
---|---|
BigAutoField(AutoField) | - bigint自增列,必須填入參數 primary_key=True 注:當model中如果沒有自增列,則自動會創建一個列名為id的列 |
SmallIntegerField(IntegerField) | - 小整數 -32768 ~ 32767 |
PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) | - 正小整數 0 ~ 32767 |
PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) | - 正整數 0 ~ 2147483647 |
BigIntegerField(IntegerField) | - 長整型(有符號的) -9223372036854775808 ~ 9223372036854775807 |
BooleanField(Field) | - 布爾值類型 |
NullBooleanField(Field): | - 可以為空的布爾值 |
TextField(Field) | -文本類型 |
EmailField(CharField) | - 字符串類型,Django Admin以及ModelForm中提供驗證機制 |
IPAddressField(Field) | - 字符串類型,Django Admin以及ModelForm中提供驗證 IPV4 機制 |
GenericIPAddressField(Field) | - 字符串類型,Django Admin以及ModelForm中提供驗證 Ipv4和Ipv6 - 參數:protocol,用于指定Ipv4或Ipv6, "both","ipv4","ipv6"unpack_ipv4, 如果指定為True,則輸入::ffff:192.0.2.1時候,可解析為192.0.2.1,開啟此功能,需要protocol="both" |
URLField(CharField) | - 字符串類型,Django Admin以及ModelForm中提供驗證 URL |
SlugField(CharField) | - 字符串類型,Django Admin以及ModelForm中提供驗證支持 字母、數字、下劃線、連接符(減號) |
CommaSeparatedIntegerField(CharField) | - 字符串類型,格式必須為逗號分割的數字 |
UUIDField(Field) | - 字符串類型,Django Admin以及ModelForm中提供對UUID格式的驗證 |
FilePathField(Field) | - 字符串,Django Admin以及ModelForm中提供讀取文件夾下文件的功能 - 參數:path: 文件夾路徑;match=None:正則匹配;recursive=False:遞歸下面的文件夾;allow_files=True:允許文件;allow_folders=False:允許文件夾; |
FileField(Field) | - 字符串,路徑保存在數據庫,文件上傳到指定目錄 - 參數:upload_to = "" :傳文件的保存路徑;storage = None :存儲組件,默認django.core.files.storage.FileSystemStorage |
ImageField(FileField) | - 字符串,路徑保存在數據庫,文件上傳到指定目錄 - 參數:upload_to = "":上傳文件的保存路徑; |
storage = None:存儲組件,默認django.core.files.storage.FileSystemStorage;width_field=None, 上傳圖片的高度保存的數據庫字段名(字符串;height_field=None:上傳圖片的寬度保存的數據庫字段名(字符串); | |
DateField(DateTimeCheckMixin, Field) | - 日期格式 YYYY-MM-DD |
TimeField(DateTimeCheckMixin, Field) | - 時間格式 HH:MM[:ss[.uuuuuu]] |
DurationField(Field) | - 長整數,時間間隔,數據庫中按照bigint存儲,ORM中獲取的值為datetime.timedelta類型 |
FloatField(Field) | - 浮點型 |
DecimalField(Field) | - 10進制小數 - 參數:max_digits:小數總長度;decimal_places:小數位長度 |
BinaryField(Field) | - 二進制類型 |
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42728.html
摘要:前言項目中開發的幾個服務一直使用作為服務器,本人也曾提出過疑問,為什么是,得到的答案是比較,,,的并發性能最好,而且最為輕量級。的賣點是超高的開發效率,其性能擴展有限的性能表現前兩天有寫一篇的帖子傳送門使用對鑒權接口加壓,看的性能表現。 前言 項目中開發的幾個服務一直使用tornado作為http服務器,本人也曾提出過疑問,為什么是tornado,得到的答案是比較tornado,fla...
摘要:當然還有其他高級的使用,日后再說完整的用戶名郵箱聯系地址留言信息用戶留言信息使用之前已經定義好了數據模型的字段元數據方法等。 前言 接續前文,上一篇文章主要涉及了 Django 項目的基礎配置等,這篇主要涉及數據庫相關的 ORM ,也就是 Django 中的 Model 的使用,MVT 三層之間的交互 教程基本都是東拼西湊的,防止有些東西表述不準確,因為我之前寫 JavaScript ...
摘要:為了將代碼規范,約定俗成將視圖放置在項目或應用程序目錄中命名為文件中。必須接受字段表示字符串長度不能超過該值,默認的標簽最常用的。例,自動添加發布時間。以字符串的形式存在,默認最大長度,可以通過參數設置。用于保存通用唯一識別碼的字段。 MVC 大部分開發語言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模塊之間的耦合性,方便變更,更容易重構代碼,最大程度上實現代碼的重...
摘要:中的對象查詢框架自帶了,實現了一些比較強大而且方便的查詢功能,這些功能和表無關。實際的模型類比如類定義后,不實例話的情況下就要具備這樣的查詢效果。 Django中的對象查詢 Django框架自帶了ORM,實現了一些比較強大而且方便的查詢功能,這些功能和表無關。比如下面這個例子: class Question(models.Model): question_text = mode...
閱讀 2518·2021-09-24 10:29
閱讀 3799·2021-09-22 15:46
閱讀 2571·2021-09-04 16:41
閱讀 2977·2019-08-30 15:53
閱讀 1258·2019-08-30 14:24
閱讀 3052·2019-08-30 13:19
閱讀 2170·2019-08-29 14:17
閱讀 3520·2019-08-29 12:55