我试图使用python3.4同时连接到两个MySQL数据库(一个本地数据库,一个远程数据库),但我真的很挣扎。把问题分成三个部分:
不幸的是,对于新手来说,我开始的地方不太合适。。。一旦我能让这个工作起来,我可以很高兴地回到基本的Python和SQL,但希望有人会同情我,并帮助我开始!在
对于第2步,我的代码如下。它似乎非常接近回答这个问题的sshtunnel示例,尽管它使用MySQLdb。目前我正在嵌入连接参数-一旦它正常工作,我将把它们移到配置文件中。在
import dropbox, pymysql, shlex, shutil, subprocess
from sshtunnel import SSHTunnelForwarder
import iot_config as cfg
def CloseLocalDB():
localcur.close()
localdb.close()
def CloseRemoteDB():
# Disconnect from the database
# remotecur.close()
# remotedb.close()
# Close the SSH tunnel
# ssh.close()
print("end of CloseRemoteDB function")
def OpenLocalDB():
global localcur, localdb
localdb = pymysql.connect(host=cfg.localdbconn['host'], user=cfg.localdbconn['user'], passwd=cfg.localdbconn['passwd'], db=cfg.localdbconn['db'])
localcur = localdb.cursor()
def OpenRemoteDB():
global remotecur, remotedb
with SSHTunnelForwarder(
('my_remote_site', 22),
ssh_username = "my_ssh_username",
ssh_private_key = "/etc/ssh/my_private_key.ppk",
ssh_private_key_password = "my_private_key_password",
remote_bind_address = ('127.0.0.1', 3308)) as server:
remotedb = None
#Following line gives an error if uncommented
# remotedb = pymysql.connect(host='127.0.0.1', user='remote_db_user', passwd='remote_db_password', db='remote_db_name', port=server.local_bind_port)
#remotecur = remotedb.cursor()
# Main program starts here
OpenLocalDB()
CloseLocalDB()
OpenRemoteDB()
CloseRemoteDB()
这是我得到的错误:
^{pr2}$提前谢谢。在
回答我自己的问题是因为,在J.M.Fernández关于Github的大量帮助下,我有了一个解决方案:我最初复制的示例使用端口3308,但端口3306是标准。一旦我改变了这个,它就开始工作了。在
相关问题 更多 >
编程相关推荐