我打算在sqlite3中创建一个表,其表中的列名称为[item1,...]。我不想在创建表时对列名进行硬编码,因为列数甚至名称都是动态的。我希望使用正确的语法直接从此列表中获取列名称。谢谢。我正在使用python。
答案 0 :(得分:0)
您可以执行以下操作:
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 (?, ?, ?)