Python遠程連接MySQL數據庫


使用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

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM