提取python字典键,将值对提取到字符串或可迭代的键#1; key1,key2,...'和[value1,value2,...]

时间:2014-07-05 20:03:55

标签: postgresql python-3.x dictionary string-formatting

使用psycopg2和postgresql 9.3需要使用以下语法将一行插入表中:

cur.execute(
'INSERT INTO customer (name,address) VALUES ('Herman M', '1313 mockingbird lane'))

如果数据出现在字典中{'名称':'赫尔曼M','地址':#13; 1313模仿鸟道'}有没有比这更好,更pythonic的方式从字典中提取键和值:

    fields,values = '',[]
    for k,v in dictionary.items():
        fields = ','.join((fields,k))
        values.append((v))

为了做到这一点:

    cur.execute(
    "INSERT INTO {} ({}) VALUES {}".format(
        tablename,fields[1:],tuple(values)))

它有效,但在看完Raymond Hettinger谈论将代码转换成美丽的惯用蟒蛇之后,我对它很丑陋并且我正在复制数据的事实很敏感。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

使用cursor.execute方法

中的字典
insert_query = """
    insert into customer (name, address)
    values (%(name)s, %(address)s)
"""
insert_dict = {
    'name': 'Herman M',
    'address': '1313 mockingbird lane'
}

cursor.execute(insert_query, insert_dict)