通过 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
在尝试上述操作之前。
我有一个 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
在尝试上述操作之前。