#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))