我在远程访问MySQL时遇到困难。我使用SSH隧道,想使用Python+SQLALchemy连接数据库MySQL。
当我在控制台中使用MySQL客户端并指定“ptotocol=TCP
“时,一切都很好!
mysql -h localhost —protocol=TCP -u USER -p
我通过SSH隧道访问远程数据库。
但是,当我想用Python+SQLAchemy连接到数据库时,我找不到—protocol=TCP
这样的选项。否则,我只能连接到本地MySQL数据库。请告诉我,有没有办法用SQLAlchemy来连接。
5条答案
按热度按时间blpfk2vs1#
这个问题的经典答案是使用
127.0.0.1
或 * 主机的IP * 或 * 主机名 *,而不是"特殊名称"localhost
。[...]默认情况下,Unix上到 * localhost * 的连接是使用Unix套接字文件建立的
后来:
然而,这个简单的技巧似乎在您的情况下不起作用,因此您必须以某种方式强制使用TCP套接字,正如您自己解释的那样,当在命令行上调用
mysql
时,您使用--protocol tcp
选项。正如这里所解释的,从SQLAlchemy,您可以将相关选项(如果有的话)作为URL选项 * 或使用
connect_args
关键字参数的 * 传递给驱动程序。例如,使用 * PyMySQL *,在我为此目的设置的测试系统(MariaDB 10.0.12、SQLAlchemy 0.9.8和PyMySQL 0.6.2)上,我得到了以下结果:
正如您所注意到的,两者都将使用TCP连接(我知道这一点是因为主机名后面的端口号)。
u0sqgete2#
这对我很有效:
其中凭据被添加到mysql数据库如下:
qnakjoqk3#
在我的设置中(我使用的是mysql-python),只需127.0.0.1在MySQL SQLAlchemy url中使用www.example.com而不是localhost就可以了。我在该场景中使用的完整url(使用本地端口3307的隧道)是:
我使用的是SQLAlchemy 1.0.5,但我想这并不重要...
dwthyt8l4#
我尝试使用此方法连接xampp服务器的mysql数据库
pxiryf3j5#
如果你使用Python 3.x,你可以使用:
然后: