![](/img/trans.png)
[英]How to export MS Access table into a csv file in Python using e.g. pypyodbc
[英]using pypyodbc to access a table with spaces in its name
这个命令工作正常。
count = conn.cursor().execute("select COUNT(*) FROM Orders;").fetchall()
但是,此命令会踢回错误
count = conn.cursor().execute("select COUNT(*) FROM "Summary of Sales"; ").fetchall()
错误是..
Traceback (most recent call last):
File "python-database.py", line 39, in <module>
print(row_count())
File "python-database.py", line 29, in row_count
count = conn.cursor().execute(query).fetchall()
File "/usr/local/lib/python2.7/dist-packages/pypyodbc.py", line 1595, in execute
self.execdirect(query_string)
File "/usr/local/lib/python2.7/dist-packages/pypyodbc.py", line 1621, in execdirect
check_success(self, ret)
File "/usr/local/lib/python2.7/dist-packages/pypyodbc.py", line 985, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File "/usr/local/lib/python2.7/dist-packages/pypyodbc.py", line 953, in ctrl_err
raise ProgrammingError(state,err_text)
pypyodbc.ProgrammingError: (u'42000', u"[42000] [FreeTDS][SQL Server]Incorrect syntax near 'Summary of Sales'.")
我使用SQL探查器查看确切的sql查询,它非常完美,我什至已将其应对并粘贴到带有数据库的控制台会话中进行测试,并且它返回的行数没有问题。 我尝试了单引号和双引号的所有不同组合。 看起来,如果放置一个表名称是一个没有任何引号的单词,它就可以正常工作。 如果我尝试放置一个包含多个单词的表名,则必须使用引号,否则它将失败。
希望你们能对此有所了解,这已经停止了我的项目,:(
您正在字符串内使用双引号,并且还对字符串定界。 请转义引号,或使用单引号分隔字符串,如下所示:
count = conn.cursor().execute('select COUNT(*) FROM "Summary of Sales"; ').fetchall()
希望能有所帮助。
当数据库,表,存储过程或变量名的名称包含空格或特殊字符时,可以在名称两边加上方括号。
count = conn.cursor().execute("select COUNT(*) FROM [Summary of Sales];").fetchall()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.