使用Python連接數據庫首先需要安裝Python的數據庫驅動。
我的本地只裝了Python,並沒有裝MySQL,當我使用命令:
sudo pip install mysql-python
安裝驅動(也就是MySQLdb模塊)的時候出現如下錯誤:
EnvironmentError: mysql_config not found
查資料 知道是因為沒有安裝下面兩開發包:
libmysqld-dev
libmysqlclient-dev
安裝:
sudo apt install libmysqld-dev
事實上用apt安裝第一個之后,第二個也已經存在了。再次嘗試安裝mysql-python就成功了。
現在嘗試遠程連接數據:
import MySQLdb
conn = MySQLdb.connect(host = '×××××××××××××', # 遠程主機的ip地址,
user = 'root', # MySQL用戶名
db = 'alimusic', # database名
passwd = '××××××', # 數據庫密碼
port = 3306, #數據庫監聽端口,默認3306
charset = "utf8") #指定utf8編碼的連接
cursor = conn.cursor() # 創建一個光標,然后通過光標執行sql語句
cursor.excute("select * from table1 limit 10")
values = cursor.fetchall() # 取出cursor得到的數據
cursor.close(); conn.close() #最后記得關閉光標和連接,防止數據泄露
如果excute()執行的是插入數據的代碼,那么在執行完成之后需要調用
cursor.commit()
才能把結果寫入數據庫
中文亂碼
編碼錯誤在任何時候都必須重視的問題,由於連接數據庫涉及到多個層次,比如數據庫服務器編碼,創建的database編碼,table的編碼,連接(也就是上面的conn)編碼。如果出現亂碼,需要檢查上述的每一個環節。這里記錄幾個查詢各種編碼的方式:
- 查詢數據庫的各種編碼:
show variables like "%char%";
- 查詢某個數據庫的默認編碼
show create database databasename;
- 查詢某張表的默認編碼
show create table tablename;
最好在create數據庫或者表的時候在創建語句后面指定具體的編碼方式:default character set utf8
參考資料
- [MySQL-Python安裝問題小記](http://www.jb51.net/article/58921.htm)
- python 使用MySQL