1

我有非常大的字典,我想插入 MySQL 表。字典键是表中的列名。到目前为止,我正在构建这样的查询:

bigd = {'k1':'v1', 'k2':10}
cols = str(bigd.keys()).strip('[]')
vals = str(bigd.values()).strip('[]')
query = "INSERT INTO table ({}) values ({})".format(cols,vals)
print query

输出:

"INSERT INTO table ('k2', 'k1') values (10, 'v1')"

这适用于Python2.7

但是在 Python 3.6 中,如果我使用这样的字符串文字:

query = f"INSERT INTO table ({cols}) values ({vals})"
print(query)

它打印这个:

"INSERT INTO table (dict_keys(['k1', 'k2'])) values (dict_values(['v1', 10]))"

有小费吗?

4

1 回答 1

1

出于好奇,您应该意识到您已将这些转换为str,将 的表示dict_keys/values插入到f-string.

您可以只转换为元组,然后插入:

cols = tuple(bigd.keys())
vals = tuple(bigd.values())
q = f"INSERT INTO table {cols} values {vals}"

但是,正如评论所指出的,这不是一种安全的方法。

于 2016-12-18T16:47:11.623 回答