Создание таблицы с использованием Python3 / sqlite3 с неизвестным количеством столбцов - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть Python класс:

class Database:
    conn = sqlite3.connect(‘database.db’)
    c = conn.cursor()

    def __init__(self):
        pass

Внутри этого класса у меня есть несколько методов, которые я буду использовать с моим классом базы данных, таких как:

def create_table(self, table_name, *args):
    pass

def add_user(self):
    pass

def remove_user(self):
    pass

И так на. Мой вопрос: как мне использовать * args с моей функцией create_table, если я не уверен, сколько у меня будет столбцов. Например, я знаю, что у меня будут столбцы first, last и pay, а моя функция будет выглядеть так:

def create_table(self, table_name, *args):
    c.execute("""CREATE TABLE ‘{}’ (‘{}’ text, ‘{}’ text, ‘{}’ 
    integer).format(self.table_name, self.first, self.last, self.pay)”””)
    c.commit()

Так что, если я хочу создать таблицу, я могу сделать это:

Item = Database()
Item.create_table('employees', ‘First_name’, ’Last_name’, 100000)

Но что, если я не знаю, сколько у меня будет столбцов? Спасибо

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Не уверен, насколько переменны ваши столбцы; или временные рамки. Кажется, у вас есть базовый набор определений, а затем появляется новый столбец. Итак, предположим, что ваш стол начинается с 4, упомянутых вами выше.

Сначала мы запускаем таблицу создания, затем l oop над файлами, обновляемся по мере того, как мы go, и если мы находим новый столбец, мы запускаем тип данных ALTER TABLE tableName ADD column_name, а затем, очевидно, вы обновление на основе ключа.

Или вы можете запустить начало таблицы до конечного значения sh и создать сразу, как предполагает qafrombayarea. Наши json файлы просто не такие дисциплинированные.

0 голосов
/ 01 марта 2020
def create_table(self, tableName, *args,):
    columns = ''
    for i in args:
        columns += i
        columns += ' '
    message = '"""CREATE TABLE {} ({})"""'.format(tableName, columns[:-1])
    return message

print (create_table («сотрудники», «первый», «текст», «последний», «текст», «pay», «integer»))

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