【问题标题】:Avoiding MaxLocksPerFile via odbc connection to MS Access通过 odbc 连接到 MS Access 避免 MaxLocksPerFile
【发布时间】:2009-12-07 15:20:10
【问题描述】:

由于“我无法控制的情况”tm,我正在使用带有 MS Access 后端的 sqlalchemy。我遇到以下代码的问题:

def delete_imports(self, files_imported_uid):
    table_name = 'my_table'
    delete_raw = self.meta.tables[table_name].delete()
    self.engine.execute(delete_raw.where(
        self.meta.tables[table_name].c.files_imported_uid == files_imported_uid)
        )

抛出“超出文件共享锁定计数”。大表错误。生成的语句只是:

DELETE FROM my_table WHERE my_table.files_imported_uid = ?

带参数的uid。然后通过 pyodbc 执行该语句。 MSDN provided 一些解决该问题的建议,然后通知我如果数据库位于 Novell NetWare 服务器上,它们将无法工作。

是否有我可以使用的已知解决方法(最好在 sqlalchemy 层),或者我是否需要创建一些丑陋的 hack,一次选择前 9,000 条记录进行删除并循环直到完成?

【问题讨论】:

标签: ms-access sqlalchemy pyodbc


【解决方案1】:

经过调查,sqlalchemy 不支持删除时的“Top”(消除了每次排序和删除前 9000 个的简单选项,直到整个删除完成),所以我放弃并单独删除了每一行。不理想,但考虑到:

1) 此操作每月只执行一次
2) 无论如何删除都很快
3) 我是应用程序的主要用户...

似乎不值得编写更有效的解决方法。

【讨论】:

    【解决方案2】:

    PRB: Error "3050 Could Not Lock File" When You Connect to a Jet Database on a Novell Server

    现在选项 1 需要对 HKLM 的管理员访问权限。选项 2 是特定于访问的,我不知道这些是否适用于 sqlalchemy。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多