新表与字典中的字段?

时间:2015-07-20 19:01:24

标签: python dictionary sqlite field database-table

如何在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()

欢迎任何想法。谢谢! :)

1 个答案:

答案 0 :(得分:2)

您当然可以通过构建字符串列表并使用',\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