Django使用原生SQL語句操做數據庫python
Django配置鏈接數據庫:
在操做數據庫以前,首先先要鏈接數據庫。這裏咱們以配置 MySQL 爲例來說解。 Django 鏈接數據庫,不須要單獨的建立一個鏈接對象。只須要在 settings.py 文件中作好數據庫相關的配置就能夠了。示例代碼以下:mysql
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'iotservice', 'USER': 'root', 'PASSWORD': 'uS$&e23klg1n', 'HOST': '127.0.0.1', 'PORT': '3306' } }
在Django中操做數據庫:
在 Django 中操做數據庫有兩種方式。第一種方式就是使用原生 sql 語句操做,第二種就是使用 ORM 模型來操做。這節課首先來說下第一種。在 Django 中使用原生 sql 語句操做其實就是使用 python db api 的接口來操做。若是你的 mysql 驅動使用的是 pymysql ,那麼你就是使用 pymysql 來操做的,只不過 Django 將數據庫鏈接的這一部分封裝好了,咱們只要在 settings.py 中配置好了數據庫鏈接信息後直接使用 Django 封裝好的接口就能夠操做了。示例代碼以下:sql
# 使用django封裝好的connection對象,會自動讀取settings.py中數據庫的配置信息 from django.db import connection # 獲取遊標對象 cursor = connection.cursor() # 拿到遊標對象後執行sql語句 cursor.execute("select * from book") # 獲取全部的數據 rows = cursor.fetchall() # 遍歷查詢到的數據 for row in rows: print(row)
以上的 execute 以及 fetchall 方法都是 Python DB API 規範中定義好的。任何使用 Python 來操做 MySQL 的驅動程序都應該遵循這個規範。因此無論是使用 pymysql 或者是 mysqlclient 或者是 mysqldb ,他們的接口都是同樣的。更多規範請參考:https://www.python.org/dev/peps/pep-0249/。數據庫
Python DB API下規範下cursor對象經常使用接口:
一、description :若是 cursor 執行了查詢的 sql 代碼。那麼讀取 cursor.description 屬性的時候,將返回一個列表,這個列表中裝的是元組,元組中裝的分別是 (name,type_code,display_size,internal_size,precision,scale,null_ok) ,其中 name 表明的是查找出來的數據的字段名稱,其餘參數暫時用處不大。
二、rowcount :表明的是在執行了 sql 語句後受影響的行數。
三、close :關閉遊標。關閉遊標之後就不再能使用了,不然會拋出異常。
四、execute(sql[,parameters]) :執行某個 sql 語句。若是在執行 sql 語句的時候還須要傳遞參數,那麼能夠傳給 parameters 參數。示例代碼以下:django
cursor.execute("select * from article where id=%s",(1,))
五、fetchone :在執行了查詢操做之後,獲取第一條數據。api
六、fetchmany(size) :在執行查詢操做之後,獲取多條數據。具體是多少條要看傳的 size 參數。若是不傳 size 參數,那麼默認是獲取第一條數據。
七、fetchall :獲取全部知足 sql 語句的數據。fetch