使用python3,我可以使用pymysql连接到mysql。一切都按预期进行。所附代码有效。
import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/home/jhgong/mysql/tmp/mysql.sock', user='root', passwd='my_pass', db='my_db', port='3333')
cur = conn.cursor()
cur.execute('select user from auth_users')
for i in cur:
print(i)
Run Code Online (Sandbox Code Playgroud)
试图让 sqlalchemy 与 pymysql 连接,默认示例字符串似乎不起作用。除非我声明端口号和 unix_socket,否则上面的示例不起作用。
下面是我一直用来尝试连接 sqlalchemy 的内容。我假设套接字和端口号都是需要的。我使用 connect_args 来提供带有额外 unix_socket 位置的哈希值。没有喜悦。
附上我一直在使用的产生错误的片段。
conarg = {
'unix_socket':'/home/jhgong/mysql/tmp/mysql.sock',
'db' :'ice'
}
engine = create_engine('mysql+pymysql://root:my_pass@127.0.0.1:3333/my_db', connect_args = conarg, echo=True)
connection = engine.connect()
Run Code Online (Sandbox Code Playgroud)
无论有或没有 conarg 哈希中的数据库,我都会收到以下错误:
>>> connection = engine.connect()
2013-01-17 13:04:20,819 INFO sqlalchemy.engine.base.Engine b'SELECT DATABASE()'
2013-01-17 13:04:20,819 INFO sqlalchemy.engine.base.Engine ()
Traceback (most recent call last):
File "/nfs/site/home/jhgongx/.local/lib/python3.2/site-packages/SQLAlchemy-0.8.0b1dev-py3.2.egg/sqlalchemy/pool.py", line …Run Code Online (Sandbox Code Playgroud)