【问题标题】:UPDATE statement on Access database fails silently under pyodbcAccess 数据库上的 UPDATE 语句在 pyodbc 下静默失败
【发布时间】:2014-09-10 13:28:17
【问题描述】:

我对简单的 UPDATE 语句有疑问。我写了一个 Python 工具,它创建了很多 UPDATE 语句,创建它们后,我想在我的 Access 数据库上执行它们,但它不起作用这是一个语句,例如:

UPDATE FCL_B_COVERSHEET_A SET BRANCH = 0 WHERE OBJ_ID = '1220140910132011062005';

语句语法不是问题。我测试了它,它可以工作。

接下来的代码 sn-p 显示了连接对象的初始化。

strInputPathMDB = "C:\\Test.mdb"
DRV = '{Microsoft Access Driver (*.mdb)}';
con = pyodbc.connect('Driver={0};Dbq={1};Uid={2};Pwd={3};'.format(DRV,strInputPathMDB,"administrator",""))

之后我写了一个执行一条 SQL 语句的方法

def executeSQLStatement(conConnection, strSQL):
        arcpy.AddMessage(strSQL)
        cursor = conConnection.cursor()
        cursor.execute(strSQL)
        conConnection.commit()

如果我执行此代码,一切似乎都能正常工作 - 没有错误消息或类似的东西 - 而且数据没有更新,我不知道我做错了什么......

for strSQL in sqlStateArray:
    executeSQLStatement(con, strSQL)
con.close()

我希望你明白我的问题是什么。感谢您的帮助。

克里斯

【问题讨论】:

  • 你的数据库文件真的在C:\(C:盘根目录)吗?
  • 是的。但我也试过 "D:\\Test.mdb" 但它不起作用。
  • 尝试将 .mdb 文件放在您知道每个人都具有不受限制的读/写权限的地方,例如“公共文档”,看看是否有帮助。您的代码基本上是正确的,因此我怀疑存储 .mdb 的文件夹存在权限问题。
  • 非常感谢。我将 mdb 文件放在公用文件夹中,它可以工作。

标签: python sql syntax-error pyodbc


【解决方案1】:

这里的问题是 .mdb 文件位于 C: 驱动器的根文件夹中。根文件夹通常将普通用户限制为只读访问,因此数据库文件以只读方式打开。将 .mdb 文件移至公用文件夹即可解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    相关资源
    最近更新 更多