@Workguy

Проверка в sqlite3?

Вопрос состоит в том, чтобы выполнить проверку на существование данной записи в БД. Пишу как в документации, проводил небольшой дебаг, но всё равно, при попытке добавить уже существующую запись в БД она успешно добавляется... Вот сам код:
import sqlite3

db = sqlite3.connect('test.db')
sql = db.cursor()

sql.execute("""create table if not exists players(
   nick text,
   score integer
)""")
db.commit()

nick = input()
score = int(input())

sql.execute("select nick from players where nick = '{nick}'")
select = sql.fetchone()

if select is None:
   sql.execute(f'insert into players(nick, score) values (?, ?)', (nick, score))
   db.commit()

   print('Successfully done!')
else:
   print('Sorry...')

for value in sql.execute('select * from players'):
   print(value)


Очень прошу помочь!
  • Вопрос задан
  • 1040 просмотров
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Не знаю какую документацию вы читали, но в оффициальной запрос select выглядит явно по другому:
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)

Put ? as a placeholder wherever you want to use a value, and then provide a tuple of values as the second argument to the cursor’s execute() method. (Other database modules may use a different placeholder, such as %s or :1.) For example:


Если все сделать как в документации:
sql.execute("select nick from players where nick = ?", (nick,))

то все прекрасно работает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы