亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Django中ORM表的創(chuàng)建和增刪改查方法示例

 更新時間:2017年11月15日 12:03:56   作者:x_smile  
這篇文章主要給大家介紹了關(guān)于Django中ORM表的創(chuàng)建和增刪改查等基本操作的方法,還給大家分享了django orm常用查詢篩選的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

Django作為重量級的Python web框架,在做項目時肯定少不了與數(shù)據(jù)庫打交道,編程人員對數(shù)據(jù)庫的語法簡單的還行,但過多的數(shù)據(jù)庫語句不是編程人員的重點對象。因此用ORM來操作數(shù)據(jù)庫相當(dāng)快捷。今天來介紹一下用ORM操作數(shù)據(jù)庫。

一、創(chuàng)建Django項目

可以使用pycharme專業(yè)版直接快速創(chuàng)建。如果不是專業(yè)版也可以使用命令進(jìn)行創(chuàng)建。下面列出命令行創(chuàng)建方式:

django-admin startproject orm_test

這時會在當(dāng)前目錄創(chuàng)建文件夾名為orm_test,接下來進(jìn)入orm_test文件夾中,執(zhí)行命令:

python manage.py runserver

就啟動了該項目,默認(rèn)瀏覽器訪問127.0.0.1:8000就可以看到項目運行成功的提示。

接下來我們用命令在項目中創(chuàng)建一個應(yīng)用:

django-admin startapp cmdb

此時基本準(zhǔn)備就做好了。

二、修改配置文件

把我們的應(yīng)用即cmdb添加到 setting.py 的 INSTALLED_APPS 中:

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'cmdb', #我們創(chuàng)建的應(yīng)用
]

另外我們基本用的是mysql數(shù)據(jù)庫,但django中默認(rèn)為sqlite3。仍然在setting.py中找到 DATABASES ,對內(nèi)容進(jìn)行修改:

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'orm_test', #數(shù)據(jù)庫名稱
 'USER':'root', #用戶
 'PASSWORD':'123456', #密碼
 'HOST':'localhost', #IP地址,本地測試為localhost
 'PORT':'3306', #端口號
 }
}

里面的“NAME”的值是你數(shù)據(jù)庫中已有的數(shù)據(jù)庫名稱,接下里在此數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表。

在python3 中,連接數(shù)據(jù)庫的是pymysql,因此在項目同名文件夾下的__init__.py 中加入以下代碼才能正常運行。

 import pymysql
 pymysql.install_as_MySQLdb()

三、寫模板文件來創(chuàng)建表結(jié)構(gòu)

在應(yīng)用(cmdb)的 models.py 中開始寫表結(jié)構(gòu),我們要做的就是寫一個類,類中的屬性為表中的列,ORM將類轉(zhuǎn)換為sql語句。簡單的寫一個下面的類,包含用戶名和密碼兩列。

from django.db import models

# Create your models here.

class users(models.Model):
 username=models.CharField(max_length=32)
 password=models.CharField(max_length=64)

四、生成數(shù)據(jù)表

在終端中輸入命令行 python manage.py makemigrations ,這時會在應(yīng)用(cmdb)下的migrations文件夾下出現(xiàn)一個_initial.py 的文件,它記錄著生成數(shù)據(jù)表結(jié)構(gòu)的一些數(shù)據(jù)的臨時文件,接著在命令行中輸入  python manage.py migrate,由剛才的臨時文件生成數(shù)據(jù)表。我們在數(shù)據(jù)庫中查看生成的數(shù)據(jù)表,可以看到django生成的不僅僅是剛創(chuàng)建的一個表,而是十多個表,除自己的一張表,剩余為django內(nèi)部使用(包含有緩存,cookie,session等,畢竟這么厲害的框架為你做到你想不到的是應(yīng)該的)。在終端中查看一下表結(jié)構(gòu):show create table cmdb_users;


看到的不僅有兩個自定的屬性列,多出一個id列,并且是自增的還是主鍵。

五、路由映射關(guān)系

在同名項目文件夾下的urls.py 中導(dǎo)入應(yīng)用(cmdb),寫映射關(guān)系到cmdb的views.py

from django.conf.urls import url
from django.contrib import admin
from cmdb import views
urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^login/', views.login),
]

六、視圖及數(shù)據(jù)表的增刪改查

在路由映射到應(yīng)用(cmdb)下的views.py 中,右映射中寫對應(yīng)的函數(shù),也就是login函數(shù)。用于顯示的觀察項目的運行,我們在此函數(shù)中就先簡單得的打印到屏幕上一句“Hello World”。

在login函數(shù)中寫入增刪改查的語句。

from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here.

from cmdb import models
def login(request):
 #增加
 # models.users.objects.create(username='xsmile',password=12345)
 # models.users.objects.create(username='sofia',password=12345)
 # models.users.objects.create(username='jerry',password=12345)
 #查看
 # result=models.users.objects.all() #查看所有

 # 條件查詢,結(jié)果為querySet類型,所以循環(huán)取出結(jié)果
 # result=models.users.objects.filter(username='sofia')
 # for row in result:
 # print(row.id,row.username,row.password)

 #更改
 # models.users.objects.filter(id=2).update(username='eric')
 
 #刪除
 #models.users.objects.filter(username='sofia').delete()

 return HttpResponse('Hello World')

啟動項目后,瀏覽器訪問127.0.0.1:8000/login 就可看到屏幕上的Hello World,表示相關(guān)的數(shù)據(jù)操作已成功修改數(shù)據(jù)表。
相關(guān)操作后數(shù)據(jù)表內(nèi)容的變化如下:

#插入一條數(shù)據(jù)后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
+----+----------+----------+
1 row in set (0.00 sec)

#再插入三條數(shù)據(jù)后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
| 2 | xsmile | 12345 |
| 3 | sofia | 12345 |
| 4 | jerry | 12345 |
+----+----------+----------+
4 rows in set (0.00 sec)

#修改數(shù)據(jù)后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
| 2 | eric | 12345 |
| 3 | sofia | 12345 |
| 4 | jerry | 12345 |
+----+----------+----------+
4 rows in set (0.00 sec)

#刪除數(shù)據(jù)后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
| 2 | eric | 12345 |
| 4 | jerry | 12345 |
+----+----------+----------+
3 rows in set (0.00 sec)

七、django orm 常用查詢篩選

先列舉一下django orm中的常用查詢的篩選方法:

  • 大于、大于等于
  • 小于、小于等于
  • in
  • like
  • is null / is not null
  • 不等于/不包含于

model:

class User(AbstractBaseUser, PermissionsMixin):
 uuid = ShortUUIDField(unique=True)
 username = models.CharField(max_length=100, db_index=True, unique=True, default='')
 schoolid = models.CharField(max_length=100, null=True, blank=True, default='')
 classid = models.CharField(max_length=100, null=True, blank=True, default='')
 fullname = models.CharField(max_length=50, default='', null=True, blank=True)
 email = models.EmailField(_('email address'), blank=True, null=True)
 age = models.SmallIntegerField(default=0)

大于、大于等于

__gt 大于
__gte 大于等于

User.objects.filter(age__gt=10) // 查詢年齡大于10歲的用戶
User.objects.filter(age__gte=10) // 查詢年齡大于等于10歲的用戶

小于、小于等于

__lt 小于
__lte 小于等于

User.objects.filter(age__lt=10)  // 查詢年齡小于10歲的用戶
User.objects.filter(age__lte=10) // 查詢年齡小于等于10歲的用戶

in

__in

查詢年齡在某一范圍的用戶
User.objects.filter(age__in=[10, 20, 30])

like

__exact    精確等于 like 'aaa'
__iexact    精確等于 忽略大小寫 ilike 'aaa'
__contains   包含 like '%aaa%'
__icontains  包含 忽略大小寫 ilike '%aaa%',但是對于sqlite來說,contains的作用效果等同于icontains。

is null / is not null

__isnull 判空

User.objects.filter(username__isnull=True)  // 查詢用戶名為空的用戶
User.objects.filter(username__isnull=False) // 查詢用戶名不為空的用戶

不等于/不包含于

User.objects.filter().excute(age=10)  // 查詢年齡不為10的用戶
User.objects.filter().excute(age__in=[10, 20]) // 查詢年齡不為在 [10, 20] 的用戶

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • python圖片指定區(qū)域替換img.paste函數(shù)的使用

    python圖片指定區(qū)域替換img.paste函數(shù)的使用

    這篇文章主要介紹了python圖片指定區(qū)域替換img.paste函數(shù)的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python之no module named xxxx以及虛擬環(huán)境配置過程

    python之no module named xxxx以及虛擬環(huán)境配置過程

    在Python開發(fā)過程中,經(jīng)常會遇到環(huán)境配置和包管理的問題,主要原因包括未安裝所需包或使用虛擬環(huán)境導(dǎo)致的,通過pip install命令安裝缺失的包是解決問題的一種方式,此外,使用虛擬環(huán)境,例如PyCharm支持的Virtualenv,可以為每個項目創(chuàng)建獨立的運行環(huán)境
    2024-10-10
  • python之實現(xiàn)兩個或多個列表相加

    python之實現(xiàn)兩個或多個列表相加

    這篇文章主要介紹了python之實現(xiàn)兩個或多個列表相加方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 如何使用Python提取Chrome瀏覽器保存的密碼

    如何使用Python提取Chrome瀏覽器保存的密碼

    今天小編教大家怎么用Python提取Chrome瀏覽器保存的密碼,在這需要導(dǎo)入一些必要模塊定義一些有用的函數(shù)來幫助我們在主函數(shù)中調(diào)用,具體實例代碼跟隨小編一起學(xué)習(xí)下吧
    2021-06-06
  • python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法

    python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法

    這篇文章主要介紹了python使用MySQLdb訪問mysql數(shù)據(jù)庫的方法,實例分析了Python使用MySQLdb模塊操作mysql數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • pytorch 修改預(yù)訓(xùn)練model實例

    pytorch 修改預(yù)訓(xùn)練model實例

    今天小編就為大家分享一篇pytorch 修改預(yù)訓(xùn)練model實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • 用Python進(jìn)行websocket接口測試

    用Python進(jìn)行websocket接口測試

    這篇文章主要介紹了用Python進(jìn)行websocket接口測試,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • python經(jīng)典100題之皮球掉落的幾種解法

    python經(jīng)典100題之皮球掉落的幾種解法

    這篇文章主要給大家介紹了關(guān)于python經(jīng)典100題之皮球掉落的幾種解法,這個問題相信不少人都可以從網(wǎng)絡(luò)上找到相對應(yīng)的答案本文提供了3種解法,需要的朋友可以參考下
    2023-11-11
  • numpy中hstack vstack stack concatenate函數(shù)示例詳解

    numpy中hstack vstack stack concatenate函數(shù)示例詳解

    這篇文章主要為大家介紹了numpy中hstack vstack stack concatenate函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 詳解Python的Django框架中Manager方法的使用

    詳解Python的Django框架中Manager方法的使用

    這篇文章主要介紹了Python的Django框架中Manager方法的使用,包括修改初始Manager QuerySets和增加額外的Manager方法等操作,需要的朋友可以參考下
    2015-07-07

最新評論