如何解决尽管阅读了文档,但PostgreSQL UPDATE语句错误
我正在尝试更新列中的数组中的数组。但是,psycopg2一直在出错,而且我不知道为什么该语句会出错。
代码:
lastUpload = "tgpx60236wa"
print(search.execute()["items"][0]["contentDetails"]["upload"]["videoId"])
connect = psycopg2.connect(host = loadConfig()["host"],database = loadConfig()["database"],user = loadConfig()["user"],password = loadConfig()["password"])
cursor = connect.cursor()
cursor.execute(f"SELECT youtube_channels[{channels.index(channel)}][1] FROM youtubeChannels WHERE guild_id = {guild[0]}")
print(cursor.fetchone()[0])
cursor.execute(f"UPDATE youtubeChannels SET youtube_channels[{channels.index(channel)}] = {lastUpload} WHERE guild_id = {guild[0]} RETURNING youtube_channels;")
connect.commit()
print(cursor.fetchone()[0])
cursor.close()
connect.close()
输出:
cursor.execute(f"UPDATE youtubeChannels SET youtube_channels[{channels.index(channel)}] = {lastUpload} WHERE guild_id = {guild[0]} RETURNING youtube_channels;")
psycopg2.errors.UndefinedColumn: column "tgpx60236wa" does not exist
LINE 1: UPDATE youtubeChannels SET youtube_channels[0] = tgpx60236wa...
我什至不知道这个错误应该意味着什么,但是我只是不知道我在做什么错。
解决方法
那是因为您不应该使用f字符串在psycopg2查询中通知参数。应该作为execute
方法的参数传递并使用占位符进行替换的查询参数,如下所示:
lastUpload = "tgpx60236wa"
print(search.execute()["items"][0]["contentDetails"]["upload"]["videoId"])
connect = psycopg2.connect(host = loadConfig()["host"],database = loadConfig()["database"],user = loadConfig()["user"],password = loadConfig()["password"])
cursor = connect.cursor()
cursor.execute("SELECT youtube_channels[%s][1] FROM youtubeChannels WHERE guild_id = %s",channels.index(channel),guild[0])
print(cursor.fetchone()[0])
cursor.execute("UPDATE youtubeChannels SET youtube_channels[%s] = %s WHERE guild_id = %s RETURNING youtube_channels;",lastUpload,guild[0])
connect.commit()
print(cursor.fetchone()[0])
cursor.close()
connect.close()
请注意,这不是将参数传递到sql查询的唯一方法。建议您深入documentation,以更好地理解。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。