问题是我不能创build一个名为Date
的字段(我认为是因为它的types)任何想法如何做到这一点?
from pyodbc import connect # database connect conn = connect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=test.mdb') cursor = conn.cursor() # sql query execute query = "create table MyTable(name varchar(30), age integer , Date date)" cursor.execute(query) # commit changes conn.commit() conn.close()
错误:
Traceback (most recent call last): File "\Path\to\myscript\test.py", line 9, in <module> cursor.execute(query) ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error in field definition. (-3553) (SQLExecDirectW)')
环境:Windows 7 64bit,Python 2.7 pyodbc-3.0.6.win-amd64-py2.7
DATE
是Access(和其他软件)中的保留字 。
尝试使用方括号[]
包装Date
列名称,或更好的是,拿出一个不同的列名称。
... query = "create table MyTable(name varchar(30), age integer , [Date] date)" ...
反过来的名字`符号。 但是,我强烈建议将名称改为其他名称以防止错字发生。
你是对的,你不能创建一个与类型同名的列。 有些RDBMS会允许你引用它,比如“ ..age integer, "Date" date)
”(或者像别人说的那样,反引号或方括号),但是你必须在所有的查询中引用它好。 最好避免这一点。
请注意,这不是一个python问题,这是数据库服务器(它似乎是MS Access)的问题。 (准确的说,这不是数据库服务器的问题 ,这只是它的工作原理,与python无关。)