如何从python脚本访问中运行保存的更新查询?

时间:2019-04-18 11:56:38

标签: python ms-access

我正在尝试使工作流程自动化,以便用户可以简单地运行python脚本,而无需进入ms访问权限来单独运行每个查询和导出表。

该查询是一个保存的更新查询,需要在导出任何表之前运行。

我的导出工作正常,但是我不知道如何使查询正常运行。

我找到了一个答案,

  

如果查询是其他类型的查询(例如SELECT   参数INSERTUPDATE,...),然后再访问Access ODBC驱动程序   将它们作为存储过程公开,因此您需要使用ODBC {CALL...}语法,如

import pyodbc
connStr = (
    r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};"
    r"DBQ=C:\Users\Public\Database1.accdb;"
    )
cnxn = pyodbc.connect(connStr)
sql = """\
{CALL mySavedUpdateQueryInAccess}
"""

crsr = cnxn.execute(sql)
cnxn.commit()
crsr.close()
cnxn.close()

但我不断收到错误消息:

  

回溯(最近通话最近):文件   “ C:\ Users \ servi \ OneDrive \ Documents \ Haley \ Licence_Management_Test \ Mercator_Licence_Management.py”,   第23行,在       qry = con.execute(SQL_qry)pyodbc.ProgrammingError:('42000','[42000] [Microsoft] [ODBC Microsoft Access驱动程序]语法错误   UPDATE语句。 (-3503)(SQLExecDirectW)')

import csv
import pyodbc

# constants
MDB = ("Z:\\pathway;")  
DRV='{Microsoft Access Driver (*.mdb, *.accdb)};'
PWD="password"

# connect to db
con = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))
cur = con.cursor()
filepath = ("C:\\pathway")    

#run query
SQL_qry = "UPDATE * CALL qry_Master_Licence_List;"               
qry = con.execute(SQL_qry)                         # executes command

print ("Querying results")

#get table info
SQL_tbl = 'SELECT * FROM tbl_Master_Licence_List;'
rows = cur.execute(SQL_tbl).fetchall()


cur.close()
con.close()

#export table as .csv

with open(filepath + 'Master_Licence_List.csv', 'w', newline='') as 
fou:
    csv_writer = csv.writer(fou)

0 个答案:

没有答案