Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 3.7中替换字符串中的值时出现的问题_Python_Python 3.x - Fatal编程技术网

在python 3.7中替换字符串中的值时出现的问题

在python 3.7中替换字符串中的值时出现的问题,python,python-3.x,Python,Python 3.x,我是Python新手。我正在尝试按如下方式形成SQL insert查询: table_name = kwargs['table_name'] sql = f"INSERT INTO {table_name} (col1, col2) VALUES (%s, %s)" params = [] for k, v in my_dict.items(): params.append([v, k]) for param in params: sql = sql % param <

我是Python新手。我正在尝试按如下方式形成SQL insert查询:

table_name = kwargs['table_name']
sql = f"INSERT INTO {table_name} (col1, col2) VALUES (%s, %s)"
params = []
for k, v in my_dict.items():
    params.append([v, k])

for param in params:
     sql = sql % param <---IN THIS LINE I AM GETTING ERROR TypeError: not enough arguments for format string

我不知道怎么做。

%
替换只识别多个参数它是
元组的实例(或
dict
用于命名替换)
所以试试这个:

对于我的目录项()中的k,v:
参数附加((v,k))
参考资料:

使用
sql=sql%(参数[1],参数[0])
而不是
sql=sql%param
您应该做的是

table_name = kwargs['table_name']
sql = f"INSERT INTO {table_name} (col1, col2) VALUES "
params = []

for k, v in my_dict.items():
    params.append("({}, {})".format(k, v))

sql += ', '.join(params)

print(sql)

这样,您就可以确保在查询中为dict值中的每个元素添加一个
('',)
字符串

table_name = kwargs['table_name']
sql = f"INSERT INTO {table_name} (col1, col2) VALUES "
params = []

for k, v in my_dict.items():
    params.append("({}, {})".format(k, v))

sql += ', '.join(params)

print(sql)