【问题标题】:Python to Access connection Database Error?Python访问连接数据库错误?
【发布时间】:2020-06-16 12:59:29
【问题描述】:

我希望使用以下代码将 python 连接到 Access 数据库:

connStr = (
    r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};"
    r"DBQ=O:\Architecture\DAART\Data Analytics Team\DAART.accdb;"
   )
cnxn = pyodbc.connect(connStr)
cursor = cnxn.cursor()

df = pd.read_sql("select * from APMS SV-8 Report", cnxn) 

对于最后一行代码,我收到以下错误消息:

DatabaseError: sql 'select * from APMS SV-8 Report' 执行失败: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] FROM 子句中的语法错误。(-3506) (SQLExecDirectW )')

【问题讨论】:

  • 我认为问题是你的表名有空格。像这样写你的查询“从'APMS SV-8报告'中选择*”(在你的表名周围加上单引号)
  • @sTekin 不,您需要将名称括起来。虽然在 ANSI SQL 中,表名周围的单引号是有效的,但 Access 开箱即用并不完全兼容(AFAIK 甚至不支持 ANSI 兼容模式下的 ANSI 引号)。
  • @ErikA 谢谢,如果有一天我使用 Access,这将节省我的时间 :)

标签: python sql database ms-access connection


【解决方案1】:

如果表名包含空格、关键字或特殊字符,Access SQL 要求您用括号括起来:

select * from [APMS SV-8 Report]

【讨论】:

  • 由于某种原因,这两种方法都不起作用。我做错了吗?
  • 我得到的参数太少错误:DatabaseError: Execution failed on sql 'select * from [APMS SV-8 Report]': ('07002', '[07002] [Microsoft][ODBC Microsoft访问驱动程序] 参数太少。预期为 7. (-3010) (SQLExecDirectW)')
  • 这是一个完全不同的错误。我猜您正在查询一个查询,而该查询取决于您未提供的参数。如果不知道主要查询,我们无法解决这个问题。
猜你喜欢
  • 2014-05-30
  • 2023-04-07
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
相关资源
最近更新 更多