MySQL驅動程序安裝:
咱們使用Django來操做Mysql,實際上底層仍是經過Python來操做的,所以咱們想要使用Django來操做mysql,首先仍是須要安裝一個驅動程序,在Python3中,驅動程序有多種選擇。好比有pymysql以及mysqlclient等。這裏咱們就是用pymysql來操做。pymysql安排很是簡單,只須要經過pip install pymysql便可安裝。
常見Mysql驅動程序介紹:
- MySQL-python:也就是MySQLdb,是對C語言操做MySQL數據庫的一個簡單封裝。遵循了Python DB API v2.可是隻支持Python2,目前還不支持Python3.
- mysqlclient:是mysql-python的另外一個分支。支持Python3而且修復了一個bug。
- pymysql:純Python實現的一個驅動,由於是純Python實現的,所以執行效率不如MySQL-python。而且也由於是純Python編寫的,所以能夠和Python代碼無縫鏈接。
- MySQL Connectot/Python:MySQL官方推出的使用純Python鏈接MySQL的驅動,由於是純Python開發的,效率不高。
在Django中操做數據庫有兩種方式,第一種方式就是使用原生sql語句操做,第二種就是使用ORM模型來操做。
在Django中使用原生sql語句操做其實就是使用python db api 的接口來操做,若是你的mysql驅動程序使用的是pymysql,那麼你就是使用pymysql來操做的,只不過Django將數據庫鏈接部分封裝好了,咱們只要找settings.py中配置好了數據庫鏈接信息後直接使用Django封裝好的接口就能夠進行操做了,示例代碼以下:
以上的execute以及fetchall方法就是Python DB API規範中定義好的,任何使用Python來操做mysql的驅動程序都應該遵循這個規範。因此無論是使用pymysql或者是mysqlclient 或者是mysqldb,他們的接口都是同樣的。python
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參數,示例代碼以下:
- fetchone:在執行查詢操做以後獲取第一條數據。
- fetchmany(size):再執行查詢操做以後,獲取多條數據,具體的個數根據size的大小,若是不傳入size參數,那麼默認獲取第一條數據。
- fetchall:獲取全部知足sql語句的數據。