Запись в sqlite 3 базы данных путем объединения 2 таблиц - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть две таблицы, клиенты и уроки. Я хочу записать дату и время в моей таблице уроков в правильной строке с правильным идентификатором клиента. Я хочу получить идентификатор клиента из таблицы клиентов, используя имя пользователя, которое клиент ввел при входе в систему, а затем использовать этот параметр для вставки даты и времени в нужное место. Вот мой код:

with sqlite3.connect('sqlite.db') as db:
            c = db.cursor()
    custid = c.execute('SELECT customerid FROM customers WHERE customerusernm = @username2')
    print(custid)
    c.execute('INSERT INTO lessons(lessondt,lessontm) VALUES (dt,tm) WHERE custid = customerid')
    connect.commit()
    connect.close()

Я получаю эту ошибку в строке с оператором select:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 0 supplied.

Как это исправить, и есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 21 февраля 2020

Вы должны предоставить кортежу значение, которое должно быть связано с тем местом, где вы написали "@ username2". Попробуйте следующее:

with sqlite3.connect('sqlite.db') as db:
            c = db.cursor()
    # set the variable to the username you want to compare to
    username = 'some username'
    custid = c.execute('SELECT customerid FROM customers WHERE customerusernm = @username2', (username,))
    print(custid)
    c.execute('INSERT INTO lessons(lessondt,lessontm) VALUES (dt,tm) WHERE custid = customerid')
    connect.commit()
    connect.close()

В зависимости от того, как вы извлекаете имя пользователя, вы можете использовать модуль getpass:

import getpass    

username = getpass.getuser()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...