python - LOAD DATA LOCAL INFILE sqlalchemy 和 python 到 mysql 数据库

标签 python mysql sqlalchemy

我正在尝试使用 LOAD LOCAL DATA INFILE 和 sqlalchemy 将批处理文件上传到我的服务器。我编辑了我的 /etc/mysql/my.conf 以在 [mysql] 下包含 local-infile == 1 [mysqld],但我在运行程序时得到了这个回溯。

相关的代码行是:

    Traceback (most recent call last):
  File "main.py", line 48, in <module>
    con.execute(sql)
  File "/Users/eoddata/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 906, in execute
    return self._execute_text(object, multiparams, params)
  File "/Users/eoddata/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1054, in _execute_text
    statement, parameters
  File "/Users/eoddata/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1146, in _execute_context
    context)
  File "/Users/eoddata/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1332, in _handle_dbapi_exception
    exc_info
  File "/Users/eoddata/venv/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/Users/eoddata/venv/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context
    context)
  File "/Users/eoddata/venv/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 442, in do_execute
    cursor.execute(statement, parameters)
  File "/Users/eoddata/venv/lib/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
    self.errorhandler(self, exc, value)
  File "/Users/eoddata/venv/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1148, 'The used command is not allowed with 
this MySQL version') [SQL: "LOAD DATA LOCAL
 INFILE 'stocks/AMEX_20150420.txt' INTO TABLE database.new_table\n                    
FIELDS TERMINATED BY ',' (Symbol,@Date,Open,High,Low,Close,Volume)\n                    
SET Date = STR_TO_DATE(@Date,'%%Y%%m%%d');"]

我已经根据文档进行了一些研究,但找不到修复此错误的方法。使用 python MySQLdb(来自 pip install MySQL-Python)将允许我传入一个 local-infile 参数。我在 SQLAlchemy 中找不到等效项。感谢您的帮助。

编辑:我整晚都在做这件事,但仍然没有取得任何进展——有很多死胡同。有什么想法吗?

谢谢,贾里德

最佳答案

您应该将 local_infile=1 添加到连接字符串。

SQLALCHEMY_DATABASE_URI = "mysql://user:pass@localhost/dbname?charset=utf8&local_infile=1"

关于python - LOAD DATA LOCAL INFILE sqlalchemy 和 python 到 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903790/

相关文章:

python - 在 OSX 10 上编译期间未找到 py2app 模块

MySQL 按同级表中的匹配项数量排序

php - 向表格的每一行添加编辑按钮以在 PHP 中更新数据库

通过 SqlAlchemy 模型类定义中的 @property 的 Python getter 和 setter : HOWTO

python - SQLAlchemy - 延迟多个组

python - Flask-SQLAlchemy 中的 LocalProxy 对象

python - 基于 Sublime Text 2 语法的特定 font_face

python - Dask DummyEncoder 不返回所有列

java - 实现复制和粘贴的代码/文本检测?

javafx 程序无法连接到 MySQL