通过 ODBC 修改现有的 MS Access 查询

Modify existing MS Access Query via ODBC

我有一个 python 脚本可以在 ArcMap 中更新和生成导出。 ArcMap 文档从 MS Access 中提取要映射的数据。目前,我必须进入 MS Access 并更新日期 from/to 列的条件(在设计视图中)并将其保存在 运行 脚本之前以生成导出。我希望能够简单地更新标准框中的日期范围、保存查询并关闭连接。

我曾尝试使用 SQL 更新字符串,但由于参数太少而出现错误,我不希望它创建或更改任何表。只有我数据库中的查询。

db = pypyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb)};"+
    r"Dbq=P:\path\path\path.mdb;")

sql = """SELECT DISTINCT"""

db.cursor().execute(sql).commit()

要通过 ODBC 在 Access 中创建保存的查询,我们可以使用 CREATE VIEW 语句,例如,

crsr.execute("CREATE VIEW CAD_Extract_Mapping AS SELECT ...")

很遗憾,Access SQL 不支持 ALTER VIEW,并且 DROP VIEW 也不起作用。但是,解决方法是使用 DROP TABLE view_name,例如

crsr.execute("DROP TABLE CAD_Extract_Mapping")
crsr.execute("CREATE VIEW CAD_Extract_Mapping AS SELECT ...")

请注意,许多 DDL 命令无法从事务中执行,因此您可能需要使用

cnxn.autocommit = True

在尝试上述操作之前。