我有一个python脚本,它连接到外部数据库并以JSON格式输出结果
此外部数据库只能由列入白名单的IP访问
但这个剧本是在Heroku主持的Laravel项目内部
我安装了一个静态IP插件(Proximo),但我需要如何设置MySQL连接
// Laravel controller retrieves data from the python script by calling it from the shell
$dataString = shell_exec("python3 storage/app/path/to/python_script.py");
$data = JsonHelper::loadFromString($dataString);
Python脚本:
def getData()
with open(path + '/query.txt', 'r') as f:
queryString = f.read()
mydb = mysql.connector.connect(
host="<database host>",
user="<user>",
password="<password>",
database = '<database name>'
)
mycursor = mydb.cursor()
mycursor.execute(queryString)
return mycursor.toList()
if __name__ == '__main__':
result = data()
print(json.dumps(result, ensure_ascii=False, indent=4)
1条答案
按热度按时间q3qa4bjr1#
一种选择是使用fixie-wrench,这是一个通过SOCKS 5代理进行端口转发的库,它允许您的应用程序连接到MySQL,就像它在本地端口上运行一样。
Fixie-wrench是由Fixie开发并开放源代码的,Fixie是Heroku的一个静态IP插件的提供商,但该库可以与任何SOCKS 5代理(包括Proximo提供的代理)一起工作。
安装
fixie-wrench
之后,您可以执行./bin/fixie-wrench $localPort:$remoteHost:$remotePort
来执行它。例如,要将www.example.com上的连接埠3306代理mysql.example.com到本机计算机上的连接埠13306:./bin/fixie-wrench 13306:mysql.example.com:3306
.