运行 如果值在数据库中不存在则循环
Run Loop If Value Does Not Exist in Database
#update - 我修复了移动 a) 的语法错误,但它仍然无法按预期工作。现在它运行循环,即使是重复的,这不是本意。
我正在尝试将引用列表添加到数据库,但前提是作者尚不存在。我在这里遇到语法错误,并且没有现有的帖子可以帮助我解决这个问题。非常感谢任何帮助,并希望这对其他人有所帮助。
SELECT EXISTS 查询的第一行给出了错误,但不确定这是否是执行此操作的最佳方法。如果我犯了一些愚蠢的新手错误,我希望它能帮助其他人避免将来浪费时间。
#Check if author already exists
if cursor.execute("SELECT EXISTS (SELECT 1 FROM quotebot WHERE author_name=?)", (author,)).fetchone():
for text, author, title, in all_quotes:
try:
if text is None or title is None and text == "":
continue
# Insert quote into table
cursor.execute("INSERT INTO quotebot("long-query-that-works"))
sqliteConnection.commit()
print('Quote Successfully Added')
# Handle errors
except sqlite3.Error as error:
print('Error occured - ', error)
else:
print("This author is already in the database. Please try a new author.")
您的 fetchone()
将始终 return 一行。该行将包含 EXISTS
的值,如果引用存在则为 1,如果不存在则为 0。因此,仅检查 fetchone()
returns 是否有任何内容不会告诉您是否已经存在重复项。 if
条件将始终成功,您将进入循环。
您应该检查由 fetchone()
编辑的 return 元组的内容:
if cursor.execute("SELECT EXISTS (SELECT 1 FROM quotebot WHERE author_name=?)", (author,)).fetchone()[0]:
或删除 EXISTS
测试和 return 行本身:
if cursor.execute("SELECT 1 FROM quotebot WHERE author_name=? LIMIT 1", (author,)).fetchone():
#update - 我修复了移动 a) 的语法错误,但它仍然无法按预期工作。现在它运行循环,即使是重复的,这不是本意。
我正在尝试将引用列表添加到数据库,但前提是作者尚不存在。我在这里遇到语法错误,并且没有现有的帖子可以帮助我解决这个问题。非常感谢任何帮助,并希望这对其他人有所帮助。
SELECT EXISTS 查询的第一行给出了错误,但不确定这是否是执行此操作的最佳方法。如果我犯了一些愚蠢的新手错误,我希望它能帮助其他人避免将来浪费时间。
#Check if author already exists
if cursor.execute("SELECT EXISTS (SELECT 1 FROM quotebot WHERE author_name=?)", (author,)).fetchone():
for text, author, title, in all_quotes:
try:
if text is None or title is None and text == "":
continue
# Insert quote into table
cursor.execute("INSERT INTO quotebot("long-query-that-works"))
sqliteConnection.commit()
print('Quote Successfully Added')
# Handle errors
except sqlite3.Error as error:
print('Error occured - ', error)
else:
print("This author is already in the database. Please try a new author.")
您的 fetchone()
将始终 return 一行。该行将包含 EXISTS
的值,如果引用存在则为 1,如果不存在则为 0。因此,仅检查 fetchone()
returns 是否有任何内容不会告诉您是否已经存在重复项。 if
条件将始终成功,您将进入循环。
您应该检查由 fetchone()
编辑的 return 元组的内容:
if cursor.execute("SELECT EXISTS (SELECT 1 FROM quotebot WHERE author_name=?)", (author,)).fetchone()[0]:
或删除 EXISTS
测试和 return 行本身:
if cursor.execute("SELECT 1 FROM quotebot WHERE author_name=? LIMIT 1", (author,)).fetchone():