Как создать таблицу в sqlite3 с именами столбцов, взятых из списка? - PullRequest
0 голосов
/ 13 января 2019

Я намерен создать в sqlite3 таблицу с именами столбцов в списке [item1, ...]. Я не хочу жестко кодировать имена столбцов при создании таблицы, потому что количество столбцов и даже имена являются динамическими. Я хочу правильный синтаксис, чтобы получить имена столбцов прямо из этого списка. Спасибо. Я использую Python.

1 Ответ

0 голосов
/ 13 января 2019

Вы можете сделать что-то вроде этого:

import contextlib
import sqlite3

fields = ["field1", "field2", "field3"]

with contextlib.closing(sqlite3.connect(':memory:')) as conn:
    cursor = conn.cursor()
    columns = ", ".join("{field} TEXT".format(field=field) for field in fields)
    cursor.execute("""
    CREATE TABLE IF NOT EXISTS your_table(
         id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE,
         {columns}
    )
    """.format(columns=columns))
    conn.commit()

Но вы должны рассмотреть возможность использования ORM, например, SqlAlchemy. Вот учебник для этого: https://www.pythoncentral.io/introductory-tutorial-python-sqlalchemy/

Редактировать

Чтобы пойти дальше, ваш оператор вставки может быть построен так:

stmt = ("INSERT INTO mytable ({fields}) VALUES ({marks})"
.format(fields=", ".join(fields), marks=", ".join("?" * len(fields))))

Например:

INSERT INTO mytable (field1, field2, field3) VALUES (?, ?, ?)
...