python - sqlite3.OperationalError:靠近“<”:语法错误
问题描述
第 115 行,添加 self.cursor.execute(f'UPDATE GuildTable SET GUILD_NAME = {str(guild_name_msg)} WHERE GUILD_IDS = {ctx.guild.id}') sqlite3.OperationalError: near "<": 语法错误
self.cursor.execute(f'UPDATE GuildTable SET GUILD_NAME = {str(guild_name_msg)} WHERE GUILD_IDS = {ctx.guild.id}')
sqlite3.OperationalError:靠近“<”:语法错误
我应该怎么办?
try:
guild_name_msg = await self.bot.wait_for('message', check=check, timeout=30)
self.cursor.execute(f"SELECT GUILD_NAME FROM GuildTable WHERE GUILD_IDS = {ctx.guild.id}")
result = self.cursor.fetchone()
if result is None:
self.cursor.execute(f'INSERT INTO GuildTable(GUILD_NAME) VALUES({str(guild_name_msg)})')
elif result is not None:
self.cursor.execute(f'UPDATE GuildTable SET GUILD_NAME = {str(guild_name_msg)} WHERE GUILD_IDS = {ctx.guild.id}')
self.db.commit()
self.cursor.close()
self.db.close()
解决方案
try:
guild_name_msg = await self.bot.wait_for('message', check=check, timeout=30)
self.cursor.execute(f"SELECT GUILD_NAME FROM GuildTable WHERE GUILD_IDS = :guild_id", {"guild_id": ctx.guild.id})
result = self.cursor.fetchone()
if result is None:
self.cursor.execute(f'INSERT INTO GuildTable(GUILD_NAME) VALUES (?)',guild_name_msg)
elif result is not None:
self.cursor.execute(
f'UPDATE GuildTable SET GUILD_NAME = :guild_name_msg WHERE GUILD_IDS = :guild_id',{"guild_id":ctx.guild.id,"guild_name_msg":guild_name_msg})
self.db.commit()
self.cursor.close()
self.db.close()
我认为您的错误是它所做的第一件事是组合字符串,这些字符串在 SQL 中运行不佳,但是如果您在 dict 或元组中传递值,SQLite 会理解它应该将它们用作值在数据库中
推荐阅读
- java - ByteBuffer put方法在ByteArray后面加0
- javascript - 函数返回代理而不是JS中的对象
- elasticsearch - 如何查找字段的值是否为数组?
- flutter - 在 fixedWidth 小部件之间添加可滚动和可刷新的数据表
- next.js - 如何在 Next.js 中获取图像的高度和宽度属性?
- google-sheets - Google 表格 - 查找列名称的动态函数(基于所述列中的值)
- database - 如何在数据库中获取他的表指纹?
- algorithm - 如何计算多个方法的递归函数循环的Big 0?
- c# - Serilog,将日志插入多租户应用程序中的特定数据库
- c# - 如何从给定货币中获得 ISO 3 金额?