Python 使用字典中的字段创建新表?

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': '???'

如何在sqlite3中创建一个以字典项为字段的表

我不能简单地手动定义每个字段,因为我有很多不同大小的字典。有没有办法做到这一点

以下是我到目前为止得出的结论:

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