python - 如果我的 mysql 套接字不在/tmp 中,是否可以将 Mysql 与 SqlAlchemy 和 Flask 一起使用?

标签 python sqlalchemy flask

mysql.sock 在我系统上的位置是/usr/local/mysql5/mysqld.sock

thrilllap-2:tmp reuven$ mysqld --print-defaults
mysqld would have been started with the following arguments:
--socket=/usr/local/mysql5/mysqld.sock --port=3306 

当我尝试通过 flask 中的 sqlalchemy 使用 mysql 时,我得到:

  File "build/bdist.macosx-10.6-intel/egg/MySQLdb/connections.py", line 187, in __init__
sqlalchemy.exc.OperationalError: (OperationalError) (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)") None None

mysql 程序正确连接到数据库,就像我系统上的所有其他 mysql 客户端一样。

我的 my.cnf 有套接字的正确位置

[client]
port            = 3306
socket          = /usr/local/mysql5/mysqld.sock 

[safe_mysqld]
socket      = /usr/local/mysql5/mysqld.sock 

[mysqld_safe]
socket          = /usr/local/mysql5/mysqld.sock 

[mysqld]
socket          = /usr/local/mysql5/mysqld.sock 

port            = 3306

基础“SQLAlchemy”库有一个选项,您可以在其中指定 mysql.sock 的位置,但这不会通过 sqlalchemy/flask 库公开

http://packages.python.org/Flask-SQLAlchemy/config.html

我的问题:

  1. sqlalchemy 从哪里得知/tmp/mysql.sock 是正确的位置?
  2. 有没有办法通过 Flash-SQLAlchemy 连接器更改默认值

最佳答案

您必须挖掘确切的语法,但对于 MySQL,我认为他们使用 unix_socket 查询选项。像这样的东西:

mysql:///dbname?unix_socket=/opt/mysql/mysql.sock'

应该是您的 SQLAlchemy 连接 URI。

关于python - 如果我的 mysql 套接字不在/tmp 中,是否可以将 Mysql 与 SqlAlchemy 和 Flask 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12543606/

相关文章:

Python - Firebase 数据库引用错误

python - 如何处理使用 Python-Flask 上传的文件?

python - NoReverseMatch 在/论坛/

python - 在 Biopython 中捕获 Genbank 文件解析错误

python - 在 Python 中格式化正则表达式

python - 如何在数据库关系中直接引用表列?

python - WHERE 子句中的子查询

sql-server - 将存储过程选择结果读入 pandas 数据帧

python - 为什么 Flask-SocketIO 有 `http` 协议(protocol)而不是 `ws` ?

python - 来自 read_json() 的 Pandas 数据帧的时间戳索引