Вставка переменного числа переменных в базу данных sqlite3

#python #sql #database #sqlite

Вопрос:

То, что я пытаюсь сделать, — это создать одну строку кода для выполнения sql, которая вставляет данные в любую таблицу, которую решит пользователь. В каждой таблице будет разное количество столбцов, поэтому я не могу указать, сколько ?s нужно заключить в скобки. Если кто-нибудь может найти решение, пожалуйста, поделитесь им со мной, так как на данный момент я застрял.

 self.conn.execute('INSERT INTO '   self.table   ' VALUES (?)', (self.data))  

self.data-это список, содержащий 3 элемента на данный момент, но может измениться, если таблица будет изменена.

Комментарии:

1. ",".join("?" * len(self.data)) выдает нужное количество вопросительных знаков.

2. Ух ты, 5 секунд

Ответ №1:

Вы можете динамически генерировать строку , разделенную запятыми ? , в зависимости от длины self.data , например:

 values = ", ".join("?" * len(self.data)) self.conn.execute('INSERT INTO '   self.table   ' VALUES ('   values   ')', (self.data))  

Если у вас есть Python 3.6 или более поздней версии, использование отформатированной строки с execute() будет более лаконичным и компактным:

 self.conn.execute(f'INSERT INTO {self.table} VALUES ({values})', (self.data))