天天看點

python xampp mysql_通過Python通路XAMPP裡面的MySQL資料庫

最近想在Python裡面調試以下MySQL,想快速地搭建起MySQL+PHP的環境,于是用到了XAMPP,

下面是使用中遇到的一些問題.

作業系統為 Ubuntu 11.04 XAMPP 使用官網提供的 1.7.7 python 使用系統自帶的 2.7.1

ptyhon需要通過MySQLdb來操作MySQL資料庫, 系統自帶的ptyhon并沒有安裝mysqldb,是以要自己安裝.

ubuntu 系統源中已有MySQLdb,是以直接從源中安裝

sudo apt-get install mysqldb

如果使用的系統沒有包管理,則要自己下載下傳MySQLdb的源碼來編譯,位址為[1]

而XAMPP 則可以直接下載下傳使用,位址為[2]

建議解壓壓縮包到/opt這一個目錄,因為XAMPP的預設配置檔案指向的是這個目錄,使用其他目錄在啟動時可能會遇到問題.

啟動XAMPP

sudo /opt/lampp/lampp

啟動後用浏覽器登入http://localhost

,發現裡面的連結都無法點選,看xammp啟動的資訊,發現MySQL沒有正确啟動.(第四行)

Starting XAMPP for Linux 1.7.4...

XAMPP: Starting Apache with SSL (and PHP5)...

XAMPP: Starting MySQL...

XAMPP: Couldn't start MySQL!

XAMPP: Starting ProFTPD...

XAMPP for Linux started.

原來我的xampp目錄一開始不是解壓在/opt是我後來複制過去的,權限沒有設定好,如果一開始就解壓到/opt就不會有這個問題

可以用以下指令來修複權, 參考自這裡[3]

sudo chown -R nobody:root /opt/lampp

在python裡面連接配接資料庫, 在執行import MySQLdb時,出現錯誤

Traceback (most recent call last):

File "", line 1, in

File "MySQLdb/init.py", line 23, in

(version_info, _mysql.version_info))

ImportError: this is MySQLdb version (1, 2, 3, 'final', 0), but _mysql is version (1, 2, 2, 'final', 0)

意思是MySQLdb的版本不比對,我是直接從源安裝的,版本是1.2.3 , 這個問題可能因人而異 于是就解除安裝掉

sudo apt-get remove mysqldb

從software center裡直接安裝1.2.2 版本,問題解決.

但是資料庫依然連接配接不上,出現如下問題

Traceback (most recent call last):

File "", line 1, in

File "MySQLdb/init.py", line 74, in Connect

return Connection(args, **kwargs)

File "MySQLdb/connections.py", line 170, in init

super(Connection, self).init(args, **kwargs2)

_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)")

原來是MySQLdb會搜尋系統的MySQL,我們用的是是xampp裡面的MySQL,是以要指定socket,用以下語句,黑體為添加部分,參考自[4].

db=MySQLdb.connect(user="root",passwd="",db="my_db",unix_socket="/opt/lampp/var/mysql/mysql.sock")

後來在用python對資料庫進行操作時,發現對資料做出的改動不起作用,斷開再連上資料庫庫,資料不在了.

在xampp自帶的phpmyadmin裡面也觀察不到資料的變動

原來在執行python語句時,其實沒有真正的寫近資料庫裡,需要執行commit()指令才能真正寫進去,參考自這裡[5]