【问题标题】:Cannot get updated DB Data with PYODBC and FLASK Python无法使用 PYODBC 和 FLASK Python 获取更新的数据库数据
【发布时间】:2017-04-06 14:15:16
【问题描述】:

我似乎在从 Python 中的 Flask 连接查询 PYODBC 连接时遇到问题。最初我让整个文件使用相同的连接,但注意到当您点击获取请求的 URL 时,它不会返回最新数据。因此,我调整脚本以在每次启动获取请求时启动和终止连接,这将返回相同的未更新数据。我确实注意到它偶尔会更新数据,但大多数时候不会。

请协助更好地澄清这个过程。

def getChg(s, cursor, arr):
getIncResolved = "SELECT COUNT(incident.number) FROM SCHEMA.OAUSER.incident incident WHERE incident.dv_resolved_by = '" + str(s) + "' AND incident.resolved_at BETWEEN '" + str(past) + "' AND '" + str(current) + "' AND incident.dv_opened_by != '" + str(s) + "';"
getTaskResolved = "SELECT COUNT(sc_task.number) FROM SCHEMA.OAUSER.sc_task sc_task WHERE sc_task.dv_closed_by = '" + str(s) + "' AND sc_task.closed_at BETWEEN '" + str(past) + "' AND '" + str(current) + "' AND sc_task.dv_opened_by != '" + str(s) + "';"
getCallStarted = "SELECT COUNT(new_call.number) FROM SCHEMA.OAUSER.new_call new_call WHERE  new_call.opened_at BETWEEN '" + str(past) + "' AND '" + str(current) + "' AND new_call.dv_opened_by = '" + str(s) + "';"
i = 0
t = 0
c = 0
cursor.execute(getIncResolved)
for row in cursor.fetchall():
    i = row[0]

cursor.execute(getTaskResolved)
for row in cursor.fetchall():
    t = row[0]
cursor.execute(getCallStarted)
for row in cursor.fetchall():
    c = row[0]
if c > -1:
    test = {'Agent': str(s), 'Calls': c, 'Inc': i, 'Task': t}
    arr.append(test)



@app.route('/data',methods=['GET', 'POST'])
def api_root():  cnxn=pyodbc.connect('DSN=ServiceNow;Uid=ServiceOps;Pwd=********;',autocommit=True)
cursor = cnxn.cursor()
data = []
staffjson = request.get_json(force=True)
staff = staffjson['users']
print(staff)
del data[:]
for s in staff:
    getChg(s, cursor, data)
print(data)
cnxn.close()
return json.dumps(data)

【问题讨论】:

  • 谢谢。此 ODBC 驱动程序只允许 SELECT 的。将不会写入数据库。为了更好的习惯,我将调整为参数化查询。

标签: python flask pyodbc


【解决方案1】:

当前变量仅在脚本初始启动时创建。因此,一旦加载它就永远不会更新到当前时间。

现在在每个请求中创建变量,并且按我预期的方式工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2021-12-06
    • 2021-08-06
    • 2022-01-18
    相关资源
    最近更新 更多