我有大约40个MS Access数据库,如果需要创建或从一个数据库向另一个数据库传输一个MS Access查询(如对象),会遇到一些问题。
所以我试图用pyodbc
来解决这个问题,但是。。如我所见,pyodbc
不支持创建新的、永久的MS-Access查询(object)。
我可以连接到数据库,创建或删除表/行,但不能创建和保存新查询。在
import pyodbc
odbc_driver = r"{Microsoft Access Driver (*.mdb, *.accdb)}"
db_test1 = r'''..\Test #1.accdb'''
db_test2 = r'''..\Test #2.accdb'''
db_test3 = r'''..\Test #3.accdb'''
db_test4 = r'''..\Test #4.accdb'''
db_test_objects = [db_test1, db_test2, db_test3, db_test4]
odbc_conn_str = "Driver=%s;DBQ=%s;" % (odbc_driver, db_file)
print (odbc_conn_str)
conn = pyodbc.connect(odbc_conn_str)
odbc_cursor = conn.cursor()
NewQuery = "CREATE TABLE TestTable(symbol varchar(15), leverage double)"
odbc_cursor.execute(NewQuery)
conn.commit()
conn.close()
那么,如何从python中创建和保存msaccess查询类对象? 我试图在Google中搜索信息,但结果与运行SQL代码有关。在
在VBA上,此代码如下所示:
^{pr2}$对不起,我的英语不是我的母语:)
顺便说一句,我知道如何用VBA解决这个问题,但我对用python解决这个问题很感兴趣。在
谢谢。在
考虑一下运行VBA的Python等价物:访问对象库的COM接口。使用Python的
win32com
第三方模块,可以调用CreateQueryDef方法。注意:这种COM接口可以应用于其他语言,如PHP和R!在下面使用
try/except/finally
块来确保无论代码的错误或成功,Access应用程序进程都会关闭(类似于VBA的On Error
处理):另外,如果需要通过pyodbc而不是COM接口来运行DML语句,可以考虑分布式查询,因为Access可以直接在SQL中查询其他数据库。下面应该可以在Python中使用(请确保转义反斜杠):
^{pr2}$可以使用CREATE VIEW语句在Access中创建保存的Select查询。与VBA示例等效的pyodbc将是
要删除保存的查询,只需执行DROP VIEW语句。在
有关Access中DDL的更多信息,请参阅
Data Definition Language
相关问题 更多 >
编程相关推荐