1

問題は、という名前のフィールドを作成できないことですDate(タイプであるためだと思います)それを行う方法はありますか?

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 64 ビット、Python 2.7 pyodbc-3.0.6.win-amd64-py2.7

4

3 に答える 3

5

DATEAccess (およびその他のソフトウェア)の予約語です。

Date列名を角かっこ[]で囲むか、別の列名を考えてみてください。

...
query = "create table MyTable(name varchar(30), age integer , [Date] date)"
...
于 2013-01-15T19:19:23.613 に答える
3

名前をバッククォートの ` 記号で囲みます。ただし、タイプミスが発生しないように、名前を別の名前に変更することを強くお勧めします。

于 2013-01-15T19:18:01.750 に答える
1

そうです、type と同じ名前の列を作成することはできません。一部の RDBMS では、" ..age integer, "Date" date)" (または他の人が言っているように、バッククォートまたは角括弧) を引用するとこれを行うことができますが、すべてのクエリでも引用する必要があります。それは避けたほうがいいです。

これは Python の問題ではなく、データベース サーバー (MS Access のようです) の問題であることに注意してください。(正確に言うと、データベース サーバーの問題ではありません。それが機能するだけです。Python とは関係ありません。)

于 2013-01-15T19:20:09.837 に答える