【问题标题】:python mysql escape \n (simple syntax error)python mysql escape \n(简单语法错误)
【发布时间】:2012-08-14 00:53:01
【问题描述】:

我想使用这个 python 命令将一个 mysql 数据库导出到一个 .csv 文件中。

cursor.execute("""SELECT * INTO OUTFILE 'NullServids.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\\n' FROM accounts WHERE srvid is NULL""")

但它返回以下语法错误。

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\\n' FROM accounts WHERE srvid is NULL' at line 1")

所以我尝试不转义换行符,当我将它复制并粘贴到 MySQL 时,这显然有效。

cursor.execute("""SELECT * INTO OUTFILE 'NullServids.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM accounts WHERE srvid is NULL""")

但是我收到了这个错误:

_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' FROM accounts WHERE srvid is NULL' at line 2")

所以我的问题是,转义换行符以便在 cursor.execute() 调用中正确解释的正确方法是什么?我用谷歌搜索了这个,但找不到答案,这让我很尴尬。

【问题讨论】:

  • 应该只是'\n'。您是否尝试过简化查询,以确保 LINES TERMINATED BY 部分确实存在问题?例如尝试在选择后移动FROM..WHERE..,并暂时离开INTO。然后添加 INTO,一次一位。

标签: python mysql syntax-error


【解决方案1】:

您忘记了字符串中的反斜杠转义,因此 \ 没有任何意义。 如果你尝试打印你正在使用的字符串,你会看到带有反斜杠的地方是空的

试试这个:

"""SELECT * INTO OUTFILE 'NullServids.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\n' FROM accounts WHERE srvid is NULL"""

【讨论】:

  • 看来我也可以在 SE 中逃脱:D
  • 抱歉,您并没有忘记我在第二次阅读时看到的内容,但是您是否尝试过转义前两个反斜杠?
  • 实际上,我忘记了这一点。所以我把你的答案标记为正确。
猜你喜欢
  • 2015-09-12
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多