Python &引用;在sql上执行失败";使用pandas.read_sql和MSAccess获取特定表名

Python &引用;在sql上执行失败";使用pandas.read_sql和MSAccess获取特定表名,python,ms-access,pandas,pypyodbc,Python,Ms Access,Pandas,Pypyodbc,最奇怪的事情正在发生。我正在使用PyODBC和pandas.io.sql(Python 2.7 32位)连接Access DB。以下代码适用于任意表名(table_name): 除了名为Currency的表之外。 我甚至可以调用表Currenc,代码可以正常工作,没问题。在末尾添加y后,我得到: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\

最奇怪的事情正在发生。我正在使用PyODBC和pandas.io.sql(Python 2.7 32位)连接Access DB。以下代码适用于任意表名(table_name):

除了名为Currency的表之外。 我甚至可以调用表Currenc,代码可以正常工作,没问题。在末尾添加y后,我得到:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 421, in read_sql
coerce_float=coerce_float, parse_dates=parse_dates)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1046, in read_sql
cursor = self.execute(*args)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1041, in execute
raise_with_traceback(ex)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1030, in execute
cur.execute(*args)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 1605, in execute
self.execdirect(query_string)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 1631, in execdirect
check_success(self, ret)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 986, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 954, in ctrl_err
raise ProgrammingError(state,err_text)
pandas.io.sql.DatabaseError: Execution failed on sql: SELECT * FROM Currency;
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python27\lib\site packages\pandas\io\sql.py”,第421行,以read\u sql格式
强制浮动=强制浮动,解析日期=解析日期)
文件“C:\Python27\lib\site packages\pandas\io\sql.py”,第1046行,以read\u sql格式
游标=self.execute(*args)
文件“C:\Python27\lib\site packages\pandas\io\sql.py”,第1041行,在execute中
使用_回溯(ex)引发_
文件“C:\Python27\lib\site packages\pandas\io\sql.py”,第1030行,在execute中
当前执行(*args)
文件“C:\Python27\lib\site packages\pyodbc.py”,第1605行,在execute中
self.execdirect(查询字符串)
execdirect中的文件“C:\Python27\lib\site packages\pyodbc.py”,第1631行
检查是否成功(自我、ret)
文件“C:\Python27\lib\site packages\pyodbc.py”,第986行,检查成功
ctrl\u err(SQL\u HANDLE\u STMT、ODBC\u obj.STMT\u h、ret、ODBC\u obj.ansi)
文件“C:\Python27\lib\site packages\pyodbc.py”,第954行,在ctrl\u err中
引发编程错误(状态、错误文本)
pandas.io.sql.DatabaseError:在sql上执行失败:从货币中选择*;
有什么想法吗


谢谢

货币
是Access中的SQL,因此如果需要将其用作表(或列)名,则必须将其括在方括号中,即

选择。。。来自[货币]

非常感谢您!就这样。我实际上在寻找类似的东西,但只找到了受限字符,而没有单词。谢谢你的链接,非常有用。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 421, in read_sql
coerce_float=coerce_float, parse_dates=parse_dates)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1046, in read_sql
cursor = self.execute(*args)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1041, in execute
raise_with_traceback(ex)
File "C:\Python27\lib\site-packages\pandas\io\sql.py", line 1030, in execute
cur.execute(*args)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 1605, in execute
self.execdirect(query_string)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 1631, in execdirect
check_success(self, ret)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 986, in check_success
ctrl_err(SQL_HANDLE_STMT, ODBC_obj.stmt_h, ret, ODBC_obj.ansi)
File "C:\Python27\lib\site-packages\pypyodbc.py", line 954, in ctrl_err
raise ProgrammingError(state,err_text)
pandas.io.sql.DatabaseError: Execution failed on sql: SELECT * FROM Currency;