从Raspberry pi连接到我的Web服务器上的SQL数据库

时间:2013-12-19 23:55:28

标签: python sql raspberry-pi

我正在尝试使用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数据库吗?

1 个答案:

答案 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)?