2010-07-21 305 views
7

我试图在过去只使用过sqlite之后使用mysql。通过Python访问XAMPP mysql

我已经在linux(ubuntu)上安装了XAMPP,并且已经启动了mysql并运行正常(看起来像使用phpMyadmin atleast)。但是,我无法使MySQLdb(python lib)正常工作{使用apt进行安装}。 确切的说:

>>> import MySQLdb 
>>> db = MySQLdb.connect(host="localhost",db="opfine") 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "/usr/lib/pymodules/python2.6/MySQLdb/__init__.py", line 81, in Connect 
    return Connection(*args, **kwargs) 
    File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 170, in __init_ 
_ 
    super(Connection, self).__init__(*args, **kwargs2) 
OperationalError: (2002, "Can't connect to local MySQL server through socket '/var 
/run/mysqld/mysqld.sock' (2)") 

我猜:

Can't connect to local MySQL server through socket '/var 
    /run/mysqld/mysqld.sock 

意味着它的期待某种本地安装的(即不是内XAMPP),但我不能想出如何去了解这个改装让它与mysql的xampp风格一起工作。

非常感谢!

回答

5

为了记录(并感谢来自Igancio指针),我发现下面的作品(可怕的我没有之前认为这):使用

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

这意味着你没有启动MySQL服务器,或者它被配置为不使用域套接字。

0

有同样的问题,并期待您的SQL配置文件my.cnf。

# The following options will be passed to all MySQL clients 
[client] 
#password = your_password 
port  = 3306 
socket  = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 

和使用套接字参数:

mysql://read:[email protected]/phonehome?unix_socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 

在我的情况:

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://read:[email protected]/phonehome?unix_socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock'