我正在尝试使用python从Raspberry Pi访问驻留在我的Web服务器上的SQL数据库。
我尝试使用以下代码:
#!/usr/bin/env python
import MySQLdb as mdb
conn = mdb.connect(host="abc.co.uk.mysql"
user="USER NAME"
passwd="PASSWORD"
db="NAME OF DATABASE")
cur = conn.cursor()
cur.execute("SELECT * FROM TABLE_NAME")
for row in cur.fetchall():
print row[0]
执行时收到以下错误!
Traceback (most recent call last):
File "getDatafromSQL", line 7, in <module>
db='alisoliman_co_u')
File "/usr/lib/python2.7/dist-packages/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'alisoliman.co.uk.mysql' (111)")
知道为什么会这样吗?有什么方法可以连接到服务器上的MySQL数据库吗?
答案 0 :(得分:0)
我确信你在for循环(代码的最后一行)下为print语句做了正确的缩进。
我不知道你在Raspberry PI上运行了哪个发行版,但我在我的RPI(Arch发行版)上尝试了你的代码,在RPI中运行的mysql服务器上的一个简单表上进行查询,它运作良好。我做了一些更改,但我不相信这些更改与正确的查询流程相关。
#!/usr/bin/env python
import MySQLdb as mdb
conn_1=mdb.Connection(db='NAME OF DATABASE', host='localhost', user='USER NAME', passwd='PASSWORD')
cur = conn_1.cursor()
cur.execute("SELECT * FROM rkn_env")
for row in cur.fetchall():
print row[0]
仅供参考,您可以使用tcpdump捕获RPI与运行MySQL服务器的主机之间的流量。这个工具多次救了我......
最后,您是否检查过您的MySQL守护程序是否正在运行和监听(例如使用netstat -anp)?