PYODBC ProgrammingError:('42000',“[42000] [Microsoft] [Pilote ODBC Microsoft Access]

时间:2014-11-14 21:10:22

标签: python ms-access pyodbc

我尝试在另一个mdb上使用左连接进行更新查询。

进入第一个MDB的游标,执行此查询:

update table as ori 
    left join (select * 
               from param in "E:/Jeter/param_141114.mdb" 
               where zone = '1H005') param 
    on ori.dep_sur = param.dsu_co 
set ori.texture = param.textu where mid(ori.type,4,1) in ('0','7','8')

当我从Microsoft Access启动此查询时,没有问题,应用查询。

当我使用pyodbc从python 2.7启动此查询时,此处我的结果是从french:

翻译而来
  

ProgrammingError('42000',“[42000] [Microsoft] [ODBC Microsoft Access   驱动]数据库引擎找不到[E:/Jeter/param_141114.mdb]   '确保名字。参数或别名是有效的,他没有   理解字符或不正确的标点符号并且它不是   长。 (-1002)(SQLExecDirectW)“)

一些想法?

1 个答案:

答案 0 :(得分:3)

显然,来自外部应用程序的ODBC查询无法使用SELECT ... FROM TableName IN "FileName" ...语法。但是,我只是尝试了以下变体,它对我有用(Python 2.7和pyodbc):

sql = """
update tableau as ori 
    left join (select * 
               from [C:/__tmp/test.mdb].param 
               where zone = '1H005') param 
    on ori.dep_sur = param.dsu_co 
set ori.texture = param.textu
"""
crsr = db.execute(sql)
crsr.commit()