使用 f-string 的查询格式
Query format with f-string
我有一个非常大的词典,我想将其插入 MySQL table。字典键是 table 中的列名。我现在正在构建我的查询:
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]))"
有什么建议吗?
出于好奇,您应该意识到您已将这些转换为 str
,将 dict_keys/values
的表示插入到 f-string
中。
您可以转换为元组然后插入:
cols = tuple(bigd.keys())
vals = tuple(bigd.values())
q = f"INSERT INTO table {cols} values {vals}"
但是,正如评论所指出的,这不是一种安全的方法。
我有一个非常大的词典,我想将其插入 MySQL table。字典键是 table 中的列名。我现在正在构建我的查询:
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]))"
有什么建议吗?
出于好奇,您应该意识到您已将这些转换为 str
,将 dict_keys/values
的表示插入到 f-string
中。
您可以转换为元组然后插入:
cols = tuple(bigd.keys())
vals = tuple(bigd.values())
q = f"INSERT INTO table {cols} values {vals}"
但是,正如评论所指出的,这不是一种安全的方法。