Вы можете сделать что-то вроде этого:
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 (?, ?, ?)