python - 如何调试连接或游标对象?
问题描述
我面临一个奇怪的问题,result = cursor.fetchone()
当数据库中有数据时返回 None 。
请让我解释一下为什么奇怪,我创建了一个连接
connection = psycopg2.connect(
user=environ["DB_USER"],
password=environ["DB_PASS"],
host=environ["DB_HOST"],
port=environ["DB_PORT"],
database=environ["DB_NAME"],
)
然后我将该连接传递给一个函数,该函数创建一个游标,执行一些查询,关闭游标并返回结果。此时连接有效,光标有效。然后我将相同的连接传递给另一个函数,这就是我遇到问题的地方:
def check_dependency(connection, uuid):
cursor = connection.cursor()
tablename = environ["PIPILE_NAME"]
sql_str = f"SELECT * FROM {tablename} "
sql_str += "WHERE uuid = %s "
sql_str += "AND NOT decrypt_status;"
cursor.execute(sql_str, (uuid,))
result = cursor.fetchone()
cursor.close()
print(sql_str, uuid, result) #<-- this output
return result
我复制了输出,直接在 postgresql 中运行,它返回了我预期的行,但函数返回 None。
我相信问题可能出在连接或光标上,但我不知道如何确保它们正常
解决方案
您不确定连接是否仍然正常工作。要对此进行调试,请创建一个连接,然后立即调用该check_dependency
函数两次。如果第二次调用失败,我们可能会将其归咎于连接,但如果第一次调用失败,那么您将需要修改函数。
推荐阅读
- android - 如何重新创建进度条旋转?
- python - 试图从文件中删除常用词
- swift - 在 swift 中以编程方式在 tableviewcell 上执行根视图控制器 segue
- python - 总结字典的python列表
- python - 关于如何在 Django 应用程序中处理 PostgreSQL 数据库的建议?
- google-app-maker - 使用 Cloud SQL 数据库预览或发布应用程序时,Google Scope 授权无限循环
- python - 如何在同一文件夹/目录中导入导入?
- python - 构建 Python 库:无法导入名称“TestClass”
- rasa-nlu - 如何在自定义操作之前立即发出消息?
- angular - 用于多条件数的 ngClass