欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

py_Django的數(shù)據(jù)庫操作-創(chuàng)新互聯(lián)


數(shù)據(jù)庫引擎

創(chuàng)新互聯(lián)建站主營淮濱網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都App定制開發(fā),淮濱h5微信小程序定制開發(fā)搭建,淮濱網(wǎng)站營銷推廣歡迎淮濱等地區(qū)企業(yè)咨詢

pymysql  取而代之   ----推薦

    2的話pip install pymysql
    3的話 pip3 install pymysql
    安裝完成后用pip3 freeze 查看一下安裝的什么版本之類的

MySQLdb  python3不支持,也TM很久沒更新了

    sudo yum install python-devel mysql-devel

    MySQL-python-1.2.5,這才是python2.7.6的mysql接口

    https://pypi.python.org/pypi/MySQL-python/1.2.5

    import MySQLdb

mysqlclient   django1.9推薦,python3.3+支持

    sudo yum install python-devel mysql-devel

    pip install mysqlclient

MySQL Connector/Python

$ python manage.py makemigrations polls     stored as amigration.
$ python manage.py sqlmigrate polls 0001     just returns their SQL
$ python manage.py check    
# this checks for any problems in your project without making migrations or touching the database.
$ python manage.py migrate    apply those changes to the database.

會自動生成主鍵_id

python manage.py shell


基本數(shù)據(jù)訪問

>>> from books.models import Publisher             >>> p1 = Publisher(name='Apress', address='....)   >>> p1.save()                                      >>> publisher_list = Publisher.objects.all()      >>> publisher_list [<Publisher: Publisher object>]

`` objects.create()`` 一步完成對象的創(chuàng)建與存儲至數(shù)據(jù)庫,就不需要save

>>> p1 = Publisher.objects.create(name='Apress', ...     address='2855 Telegraph Avenue',..............

添加模塊的字符串表現(xiàn)

Publisher 對象添加一個方法 __unicode__() 。

from django.db import models class Publisher(models.Model):     name = models.CharField(max_length=30)     def __unicode__(self):         return self.name>>> from books.models import Publisher >>> publisher_list = Publisher.objects.all() >>> publisher_list [<Publisher: Apress>, <Publisher: O'Reilly>]

插入和更新數(shù)據(jù)

因為 Publisher 模型有一個自動增加的主鍵 id ,所以第一次調(diào)用 save() 還多做了一件事: 計算這個主鍵的值并把它賦值給這個對象實例:

>>> p.id 52    # this will differ based on your own data

接下來再調(diào)用 save() 將不會創(chuàng)建新的記錄,而只是修改記錄內(nèi)容(也就是 執(zhí)行 UPDATE SQL語句,而不是INSERT 語句):

>>> p.name = 'Apress Publishing' >>> p.save()

注意,并不是只更新修改過的那個字段,所有的字段都會被更新。 這個操作有可能引起競態(tài)條件

選擇對象

取出所有記錄:

>>> Publisher.objects.all() [<Publisher: Apress>, <Publisher: O'Reilly>]

數(shù)據(jù)過濾

filter()返回集合

你可以傳遞多個參數(shù)到 filter() 來縮小選取范圍:

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA") [<Publisher: Apress>]

在 name 和 contains 之間有雙下劃線。contains部分會被Django翻譯成LIKE語句:

>>> Publisher.objects.filter(name__contains="press") [<Publisher: Apress>]

注意,SQL缺省的 = 操作符是精確匹配的

SELECT id, name, address, city, state_province, country, website FROM books_publisher WHERE name LIKE '%press%';

其他的一些查找類型有:icontains(大小寫無關的LIKE),startswithendswith, 還有range(SQLBETWEEN查詢)。 附錄C詳細描述了所有的查找類型。

獲取單個對象

`` get()`` 返回單個的對象

>>> Publisher.objects.get(name="Apress") <Publisher: Apress>

如果結果是多個對象,會導致拋出異常,如果查詢沒有返回結果也會拋出異常:

DoesNotExist: Publisher matching query does not exist.

 Publisher.DoesNotExist 在你的應用中,你可以捕獲并處理這個異常,像這樣:

try:     p = Publisher.objects.get(name='Apress') except Publisher.DoesNotExist:     print "Apress isn't in the database yet." else:     print "Apress is in the database."

數(shù)據(jù)排序

有序返回查詢結果

如果需要以多個字段為標準進行排序(第二個字段會在第一個字段的值相同的情況下被使用到),減號 -
表示逆向排序:

>>> Publisher.objects.order_by("-state_province", "address")  [<Publisher: Apress>, <Publisher: O'Reilly>]

Django讓你可以指定模型的缺省排序方式: class Meta,內(nèi)嵌類。

class Publisher(models.Model):     name = models.CharField(max_length=30)          def __unicode__(self):         return self.name              **class Meta:**         **ordering = ['name']**

連鎖查詢

“鏈式”的形式:

>>> Publisher.objects.filter(country="U.S.A.").order_by("-name") [<Publisher: O'Reilly>, <Publisher: Apress>]

限制返回的數(shù)據(jù)

取出固定數(shù)目的記錄,剪語句,不支持負索引,但可逆序查詢

>>> Publisher.objects.order_by('-name')[0:2]

更新多個對象

更新一條記錄

>>> Publisher.objects.filter(id=52).update(name='Apress Publishing')

更新多條記錄。

>>> Publisher.objects.all().update(country='USA')   # 所有Publisher的country字段 2                        # 表示受影響的記錄條數(shù)

注:save()方法,這個方法會更新一行里的所有列。 而某些情況下,我們只需要更新行里的某幾列。

刪除對象

刪除數(shù)據(jù)庫中的對象只需調(diào)用該對象的delete()方法即可:

>>> p = Publisher.objects.get(name="O'Reilly") >>> p.delete() >>> Publisher.objects.all() [<Publisher: Apress Publishing>]>>> Publisher.objects.filter(country='USA').delete()    # 刪除部分 >>> Publisher.objects.all().delete()            # 刪除所有

 為了預防誤刪除掉某一個表內(nèi)的所有數(shù)據(jù),Django要求在刪除表內(nèi)所有數(shù)據(jù)時顯示使用all()。 否則報錯

>>> Publisher.objects.delete()            # 必需加all() Traceback (most recent call last):   File "<console>", line 1, in <module> AttributeError: 'Manager' object has no attribute 'delete'

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站題目:py_Django的數(shù)據(jù)庫操作-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://chinadenli.net/article22/cohjjc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作網(wǎng)站策劃微信小程序關鍵詞優(yōu)化企業(yè)網(wǎng)站制作ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作