3

このコマンドは正常に動作します..

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クエリを確認しましたが、それは完璧です.データベースとのコンソールセッションに対処して貼り付けてテストしたところ、問題なく行数が返されました. 一重引用符と二重引用符のさまざまな組み合わせをすべて試しました。引用符のない単一の単語であるテーブル名を配置すると、正常に機能するようです。複数の単語で構成されるテーブル名を付けようとすると、引用符を使用する必要があり、失敗します。

皆さんがこれに光を当ててくれることを願っています。それは私のプロジェクトをそのトラックで止めました:(

4

2 に答える 2