之前寫過一篇 Python使用MySQL數據庫的博客,主要使用的是Python2和MySQLdb驅動。
python使用mysql數據庫
然而,2016年開始,我從Python2切換到了Python3,Python2已經基本不再使用,MySQLdb驅動從2014年1月停止了維護。所以,打算重新再來寫這篇博客。
- Python2 ---> Python3
- MySQLdb --> PyMySQL
一,安裝PyMySQL
Python是編程語言,MySQL是數據庫,它們是兩種不同的技術;要想使Python操作MySQL數據庫需要使用驅動。這里選用PyMySQL驅動。下載地址:
https://pypi.python.org/pypi/PyMySQL
https://github.com/PyMySQL/PyMySQL
當然,最簡單的安裝方式還是使用pip命令。
> pip install PyMySQL
把install 換成show命令,查看PyMySQL安裝是否成功。
二,創建MySQL表
執行下面的SQL語句,創建一張users 表。
CREATE TABLE `users` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `email` VARCHAR(255) COLLATE utf8_bin NOT NULL, `password` VARCHAR(255) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
三,Python操作MySQL
接下來才是重點,Python操作MySQL數據庫。
4.1插入數據:
import pymysql.cursors # 連接MySQL數據庫
connection = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='198876', db='guest',
charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) # 通過cursor創建游標
cursor = connection.cursor() # 創建sql 語句,並執行
sql = "INSERT INTO `users` (`email`, `password`) VALUES ('huzhiheng@itest.info', '123456')" cursor.execute(sql) # 提交SQL
connection.commit()
不管你使用的是什么工具或庫,連接數據庫這一步必不可少。host為數據庫的主機IP地址,port為MySQL的默認端口號,user為數據的用戶名,password為數據庫的登錄密碼,db為數據庫的名稱。
cursor()方法創建數據庫游標。
execute()方法執行SQL語句。
commit()將數據庫的操作真正的提交到數據。
4.2. 查詢數據
import pymysql.cursors # 連接MySQL數據庫
connection = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='198876', db='guest', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor) # 通過cursor創建游標
cursor = connection.cursor() # 執行數據查詢
sql = "SELECT `id`, `password` FROM `users` WHERE `email`='huzhiheng@itest.info'" cursor.execute(sql) #查詢數據庫單條數據
result = cursor.fetchone() print(result) print("-----------華麗分割線------------") # 執行數據查詢
sql = "SELECT `id`, `password` FROM `users`" cursor.execute(sql) #查詢數據庫多條數據
result = cursor.fetchall() for data in result: print(data) # 關閉數據連接
connection.close()
接下來的操作就是數據庫的查詢了。
fetchone() 用於查詢單條數據。
fetchall() 用於查詢多條數據。
close() 最后不要忘記了關閉數據連接。
運行結果:
{'password': '123456', 'id': 1} -----------華麗分割線------------ {'password': '123456', 'id': 1} {'password': '654321', 'id': 2}