2012-08-14 85 views
-1

我想使用这个python命令将mysql数据库导出到.csv文件中。python mysql escape n(简单语法错误)

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()调用正确解释的正确方法?我谷歌搜索,找不到答案,很多我的尴尬。

+0

应该只是“\ n”。你有没有试过简化查询,以确保它真的是'LINES TERMINATED BY'部分的问题?例如,尝试在选择后移动'FROM..WHERE..',并暂时离开'INTO'。然后一次添加INTO。 – azhrei 2012-08-14 01:20:57

回答

0

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

试试这个:

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

看来我可以在SE这里逃避东西:D – 2012-08-14 01:35:06

+0

对不起,你不会忘记我在第二次阅读时看到的所有内容,但是你是否尝试过逃脱前两个反斜杠? – 2012-08-14 01:37:04

+0

其实我忘记了。所以我标记你的答案是正确的。 – Seanny123 2013-10-16 01:24:37