python - raise err.ProgrammingError("execute() first") pymysql.err.ProgrammingError: execute() first
问题描述
我有一个返回游标的连接函数,我正在使用 pymysql 连接我的数据库,并且我有另一个文件使用连接函数执行 sql 语句,但是当我获取行时它返回错误raise err.ProgrammingError("execute() first")
这是从我的数据库配置文件扩展而来的连接函数
def kasaa():
try:
conn = mysql.connect()
cursor = conn.cursor(pymysql.cursors.DictCursor)
return cursor
except Exception as e:
print(e)
但是当我在kasaa()
内部调用一个员工类时,它首先引发了一个execute()
错误
def get_multiple_info(self,employees_ids):
"""Get info of multiple Employees in database"""
try:
for employee_id in employees_ids:
kasaa().execute(
"SELECT * FROM ospos_employees WHERE ospos_employees.deleted = 0 AND ospos_employees.person_id = %s ",
employee_id
)
row = kasaa().fetchone()
return row()
except Exception as e:
print(e)
finally:
kasaa().close()
解决方案
中的代码kasaa()
执行了两次,所以fetchone()
实际上是在没有execute()
. 获取cursor
并使用它来调用其他函数
def get_multiple_info(self, employees_ids):
"""Get info of multiple Employees in database"""
cursor = None
try:
for employee_id in employees_ids:
cursor = kasaa()
cursor.execute(
"SELECT * FROM ospos_employees WHERE ospos_employees.deleted = 0 AND ospos_employees.person_id = %s ",
employee_id
)
row = cursor.fetchone()
return row()
except Exception as e:
print(e)
finally:
cursor.close()
推荐阅读
- javascript - 挂钩 | 添加多个列表状态
- javascript - 在 AFrame 中使用按钮移动动态对象
- python - QTableView 的 HTML 渲染器 - 字体大小发生了什么变化?
- javascript - 在使用引导树视图填充之前对树数据进行排序
- postgresql - PostgreSQL 从时间戳中提取年份然后应用间隔计算
- r - 从满足其他列条件的上一行复制列的值
- javascript - 更新 .map 后的状态
- python - 使用 python 脚本将文本传递到 Windows cmd 行
- java - 不知道为什么我的 for 循环没有按照我的预期工作
- react-native - 功能组件调用其他功能导致无效的挂钩调用