django配置連接數(shù)據(jù)庫(kù)及原生sql語(yǔ)句的使用方法
前言
本文主要給大家介紹了關(guān)于django配置連接數(shù)據(jù)庫(kù)及原生sql語(yǔ)句的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧
Django配置連接數(shù)據(jù)庫(kù):
在操作數(shù)據(jù)庫(kù)之前,首先先要連接數(shù)據(jù)庫(kù)。這里我們以配置MySQL為例來講解。Django連接數(shù)據(jù)庫(kù),不需要單獨(dú)的創(chuàng)建一個(gè)連接對(duì)象。只需要在settings.py文件中做好數(shù)據(jù)庫(kù)相關(guān)的配置就可以了。
示例代碼如下:
DATABASES = { 'default': { # 數(shù)據(jù)庫(kù)引擎(是mysql還是oracle等) 'ENGINE': 'django.db.backends.mysql', # 數(shù)據(jù)庫(kù)的名字 'NAME': 'dfz', # 連接mysql數(shù)據(jù)庫(kù)的用戶名 'USER': 'root', # 連接mysql數(shù)據(jù)庫(kù)的密碼 'PASSWORD': 'root', # mysql數(shù)據(jù)庫(kù)的主機(jī)地址 'HOST': '127.0.0.1', # mysql數(shù)據(jù)庫(kù)的端口號(hào) 'PORT': '3306', } }
在Django中操作數(shù)據(jù)庫(kù):
在Django中操作數(shù)據(jù)庫(kù)有兩種方式。第一種方式就是使用原生sql語(yǔ)句操作,第二種就是使用ORM模型來操作。這節(jié)課首先來講下第一種。
在Django中使用原生sql語(yǔ)句操作其實(shí)就是使用python db api的接口來操作。如果你的mysql驅(qū)動(dòng)使用的是pymysql,那么你就是使用pymysql來操作的,只不過Django將數(shù)據(jù)庫(kù)連接的這一部分封裝好了,我們只要在settings.py中配置好了數(shù)據(jù)庫(kù)連接信息后直接使用Django封裝好的接口就可以操作了。示例代碼如下:
# 使用django封裝好的connection對(duì)象,會(huì)自動(dòng)讀取settings.py中數(shù)據(jù)庫(kù)的配置信息 from django.db import connection # 獲取游標(biāo)對(duì)象 cursor = connection.cursor() # 拿到游標(biāo)對(duì)象后執(zhí)行sql語(yǔ)句 cursor.execute("select * from book") # 獲取所有的數(shù)據(jù) rows = cursor.fetchall() # 遍歷查詢到的數(shù)據(jù) for row in rows: print(row)
以上的execute以及fetchall方法都是Python DB API規(guī)范中定義好的。任何使用Python來操作MySQL的驅(qū)動(dòng)程序都應(yīng)該遵循這個(gè)規(guī)范。所以不管是使用pymysql或者是mysqlclient或者是mysqldb,他們的接口都是一樣的。更多規(guī)范請(qǐng)參考:https://www.python.org/dev/peps/pep-0249/。
Python DB API下規(guī)范下cursor對(duì)象常用接口:
1、description:如果cursor執(zhí)行了查詢的sql代碼。那么讀取cursor.description屬性的時(shí)候,將返回一個(gè)列表,這個(gè)列表中裝的是元組,元組中裝的分別是(name,type_code,display_size,internal_size,precision,scale,null_ok),其中name代表的是查找出來的數(shù)據(jù)的字段名稱,其他參數(shù)暫時(shí)用處不大。
2、rowcount:代表的是在執(zhí)行了sql語(yǔ)句后受影響的行數(shù)。
3、close:關(guān)閉游標(biāo)。關(guān)閉游標(biāo)以后就再也不能使用了,否則會(huì)拋出異常。
4、execute(sql[,parameters]):執(zhí)行某個(gè)sql語(yǔ)句。如果在執(zhí)行sql語(yǔ)句的時(shí)候還需要傳遞參數(shù),那么可以傳給parameters參數(shù)。示例代碼如下:
cursor.execute("select * from article where id=%s",(1,))
5、fetchone:在執(zhí)行了查詢操作以后,獲取第一條數(shù)據(jù)。
6、fetchmany(size):在執(zhí)行查詢操作以后,獲取多條數(shù)據(jù)。具體是多少條要看傳的size參數(shù)。如果不傳size參數(shù),那么默認(rèn)是獲取第一條數(shù)據(jù)。
7、fetchall:獲取所有滿足sql語(yǔ)句的數(shù)據(jù)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Python控制臺(tái)輸出時(shí)刷新當(dāng)前行內(nèi)容而不是輸出新行的實(shí)現(xiàn)
今天小編就為大家分享一篇Python控制臺(tái)輸出時(shí)刷新當(dāng)前行內(nèi)容而不是輸出新行的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02手把手教你利用opencv實(shí)現(xiàn)人臉識(shí)別功能(附源碼+文檔)
最近搞一個(gè)人臉識(shí)別的項(xiàng)目練練手,不得不感嘆opencv做人臉檢測(cè)實(shí)在是強(qiáng),這篇文章主要給大家介紹了關(guān)于利用opencv實(shí)現(xiàn)人臉識(shí)別功能的相關(guān)資料,并附上了源碼以及文檔,需要的朋友可以參考下2021-09-09Python Matplotlib庫(kù)安裝與基本作圖示例
這篇文章主要介紹了Python Matplotlib庫(kù)安裝與基本作圖,簡(jiǎn)單分析了Python使用pip命令安裝Matplotlib庫(kù)及繪制三角函數(shù)曲線的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01Pandas 中的join函數(shù)應(yīng)用實(shí)現(xiàn)刪除多余的空行
這篇文章主要介紹了Pandas 中的join函數(shù)應(yīng)用實(shí)現(xiàn)刪除多余的空行,str.join也就是sequence要連接的元素序列,下面我們來看看他的作用實(shí)現(xiàn)刪除多余的空行,需要的小伙伴可以參考一下2022-02-02使用Python腳本生成隨機(jī)IP的簡(jiǎn)單方法
這篇文章主要介紹了使用Python腳本生成隨機(jī)IP的簡(jiǎn)單方法,并且可以自己設(shè)定IP數(shù)值范圍,需要的朋友可以參考下2015-07-07Python基礎(chǔ)之列表常見操作經(jīng)典實(shí)例詳解
這篇文章主要介紹了Python基礎(chǔ)之列表常見操作,結(jié)合實(shí)例形式詳細(xì)分析了Python列表創(chuàng)建方式、內(nèi)置函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下2020-02-02Python+Selenium自動(dòng)化實(shí)現(xiàn)分頁(yè)(pagination)處理
這篇文章主要為大家詳細(xì)介紹了Python+Selenium自動(dòng)化實(shí)現(xiàn)分頁(yè)pagination處理的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Python使用psutil庫(kù)對(duì)系統(tǒng)數(shù)據(jù)進(jìn)行采集監(jiān)控的方法
利用psutil庫(kù)可以獲取系統(tǒng)的一些信息,如cpu,內(nèi)存等使用率,從而可以查看當(dāng)前系統(tǒng)的使用情況,實(shí)時(shí)采集這些信息可以達(dá)到實(shí)時(shí)監(jiān)控系統(tǒng)的目的。本文給大家介紹Python psutil系統(tǒng)監(jiān)控的相關(guān)知識(shí),感興趣的朋友一起看看吧2021-08-08