Python 使用字典中的字段创建新表?
如何在sqlite3中创建一个以字典项为字段的表 我不能简单地手动定义每个字段,因为我有很多不同大小的字典。有没有办法做到这一点 以下是我到目前为止得出的结论:Python 使用字典中的字段创建新表?,python,dictionary,sqlite,field,database-table,Python,Dictionary,Sqlite,Field,Database Table,如何在sqlite3中创建一个以字典项为字段的表 我不能简单地手动定义每个字段,因为我有很多不同大小的字典。有没有办法做到这一点 以下是我到目前为止得出的结论: import sqlite3 DICT = { 'field 1': 'TEXT', 'field 2': 'TEXT', 'field 3': 'INT', 'field 4': 'TEXT' 'field x': '???'
import sqlite3
DICT = { 'field 1': 'TEXT',
'field 2': 'TEXT',
'field 3': 'INT',
'field 4': 'TEXT'
'field x': '???'
}
def create_table(DICT):
with sqlite3.connect("data.db") as connection:
cursor = connection.cursor()
# should instead iterate over the dictionary and create a field for each entry
cursor.execute("""CREATE TABLE table_name
(dict_key_x, DICT_VALUE_X)""")
connection.close()
欢迎提出任何意见。谢谢!:) 通过构建字符串列表并使用
,\n'.join
DICT = {'field 1': 'TEXT',
'field 2': 'TEXT',
'field 3': 'INT',
'field 4': 'TEXT'
'field x': '???'}
columns = "(" + ",\n".join(["{} {}".format(k,v) for k,v in DICT.items()]) + ")"
# looks like:
# # """(field 1 TEXT,
# # field 2 TEXT,
# # field 3 INT,
# # field 4 TEXT,
# # field x ???)"""
with sqlite.connect('data.db') as connection:
cursor = connections.cursor()
cursor.execute("CREATE TABLE table_name\n" + columns)
# you don't have to close the connection if you're using a with statement
这不就是字符串插值吗?谢谢!在我将您的列格式更改为'columns=“(“+”,”.join(“{}{}”)。在DICT.items())+”中将k,v的格式(k,v)更改为'columns=“(“+”)”。这将生成以下sqlite3命令:““创建表名(字段1文本、字段2文本等)”,您的建议返回了一个错误,因为格式如下:““创建表名(字段1文本)、(字段2文本等)”@St4rb0y已编辑以反映这些更改。自从我不得不手工构建原始SQL查询以来,这已经是天长地久了——我不记得语法了!sqlalchemy是你的朋友:D