【问题标题】:"cannot find the input table or query" error for a SELECT statementSELECT 语句的“找不到输入表或查询”错误
【发布时间】:2017-03-31 02:20:06
【问题描述】:

我正在使用 Python 将 MS Access 表保存为 CSV 文件。 MS Access 数据库中有一个名为“Perm_Site Info”的表。 MS Access 中的命名有一个空格。当我运行下面的 sn-p 时,代码会爆炸。我尝试在 cursor.execute 中使用单引号和双引号,但没有结果。我请求您提供帮助,以了解如何解决此问题。

import pyodbc
import csv

conn_string = ("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\\Access\\permissions.accdb") 

conn = pyodbc.connect(conn_string)

cursor = conn.cursor()

cursor.execute("select * from Perm_Site Info;")

with open('C:\\Desktop\\Python Files\\Perms_Site_Info.csv','wb') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow([i[0] for i in cursor.description])
    writer.writerows(cursor)

cursor.close()
conn.close()

print 'All done for now'

错误:

cursor.execute("select * from Perm_Site Info;")
ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Microsoft Access Driver] The Microsoft Access database engine cannot find the input table or query 'Perm_Site'. Make sure it exists and that its name is spelled correctly. (-1305) (SQLExecDirectW)")

【问题讨论】:

    标签: python csv ms-access pyodbc


    【解决方案1】:

    尝试在整个表名周围使用方括号。它之所以吠叫是因为它不知道如何处理这个空间。

    cursor.execute("select * from [Perm_Site Info];")

    【讨论】:

    • 谢谢 X0r,我尝试了你的建议,现在它抛出一个错误,显示 writer.writerows(cursor) UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 4: ordinal不在范围内(128)
    • OK 嗯.. 尝试将您的 SQL 查询放在一个字符串中,然后将其传递给您的方法
    • 我正在学习 Python。你能告诉我我该怎么做吗?
    • 呃.. 工作时突然断电.. 无法及时编辑我的评论。无论如何.. Unicode 和 ascii 不太喜欢对方。这里有另一个答案可能可以帮助您解决这个问题。现在你从表中得到了一些东西,但它不知道如何处理一些奇怪的字符。 stackoverflow.com/questions/3224268/python-unicode-encode-error
    • @Learner re: "UnicodeEncodeError" - 这是一个不同的问题。您应该接受这个答案,因为它已经解决了您最初询问的问题,然后提出一个关于 Python 的 csv 模块如何处理 Unicode 字符的新问题。
    猜你喜欢
    • 2017-03-05
    • 2015-12-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多