我想在Python中使用SQLite3创建一个表。我有一套,例如
Set = set(['CY110', 'PH100', 'CY100', 'CS100', 'BE110'])
正常创建表条件的样板:
sql_create_table = """ CREATE TABLE IF NOT EXISTS marks (id integer PRIMARY KEY,name text NOT NULL, );"""
我遇到的问题是我需要像这样包含每个元素:
sql_create_table = """ CREATE TABLE IF NOT EXISTS marks (id integer PRIMARY KEY,name text NOT NULL,CY100 text,PH100 text,CS100 text,BE100 text);"""
我该怎么做?
可以使用生成器表达式并将输出与','
联接,以生成所需的查询字符串:
sql_create_table = 'CREATE TABLE IF NOT EXISTS marks (id integer PRIMARY KEY,name text NOT NULL,' + ','.join('%s text' % c for c in Set)
使用示例输入,sql_create_table
将变为:
CREATE TABLE IF NOT EXISTS marks (id integer PRIMARY KEY,name text NOT NULL,BE110 text,CS100 text,CY100 text,PH100 text,CY110 text
如果您只想格式化该集合中的字符串,则可以使用以下方法。还可以考虑名称Set
以外的其他内容:
mySet = set(['CY110', 'PH100', 'CY100', 'CS100', 'BE110'])
mySet = list(mySet)
sql_create_table = """ CREATE TABLE IF NOT EXISTS marks (id integer PRIMARY KEY,name text NOT NULL,{0} text,{1} text,{2} text,{3} text);""".format(mySet[0],mySet[1],mySet[2],mySet[3])
print(sql_create_table)
如果不转换为列表,则无法直接为集合编制索引以格式化字符串,因为集合未按此链接中所述进行排序