Python PymySQL将separang请求插入并更新为param值
我使用pymysql for Python2.7将我的请求与更安全的值分离 我有动态参数,所以我使用.join()来构建我的请求 我就是这样做的:Python PymySQL将separang请求插入并更新为param值,python,sql,python-2.7,pymysql,Python,Sql,Python 2.7,Pymysql,我使用pymysql for Python2.7将我的请求与更安全的值分离 我有动态参数,所以我使用.join()来构建我的请求 我就是这样做的: def updateItem(self, table, body, where): print 'updateItem' if body is not None: if body["data"]: key_list = [] for key, data in zip(bo
def updateItem(self, table, body, where):
print 'updateItem'
if body is not None:
if body["data"]:
key_list = []
for key, data in zip(body['keys'], body['data']):
placeholder = '{} = '.format(key) + '%s'
key_list.extend([placeholder])
val_list = ", ".join(key_list)
req = """UPDATE """ +table+ """ SET {values} WHERE {where_key}={where_value};""".format(table=table, values=val_list, where_key=where[0], where_value=where[1])
print req
params = '"' + '", "'.join(body['data']) + '"'
print params
return self.update(req, (params))
以及:
第一张照片给了我:
更新组织集uuid=%s,永久名称=%s,名称=%s,
简短描述=%s,描述=%s,网站=%s,正在启动=
%s、 是否为公司=%s,徽标=%s,人数\u最小=%s,人数\u最大=
%s、 是否已关闭=%s,投资数量=%s,其中
uuid=3325e470-542a-44cd-b094-3fcfd55bb32c
第二个是:
“c7ba44f9-xxx-4a7b-89b0-xxxxx”、“xxx-2”,
“xxxxxxx”,“xxxxxxx”是您的高级xxxxxx顾问,指导
您可以访问xxx右键课程和xxxxx以及1号xxxxx站点
在xxxxx中,“,”xxxxx是您的高级xxxx顾问,指导
您可以访问xxxx和xxx以及Noxxxxxxx站点
在xxxxx中,“,”,“0”,“1”,
"",
“51”、“100”、“0”、“0”
我收到以下错误消息:
格式字符串的参数不足:TypeError回溯(most)
最近一次调用:文件“/var/task/setter_organizations.py”,第38行,
在handler structured_data.insert()文件中
“/var/task/setter_organizations.py”,插入部分第109行
self.update([“uuid”,uuid])文件“/var/task/setter\u organizations.py”,
更新self.rds.updateItem(self.type,self.data,其中)中的第112行
文件“/var/task/RDS/RDS.py”,第87行,在updateItem返回中
self.update(req,(params))文件“/var/task/RDS/RDS.py”,第51行,在
更新raise TYPE错误:格式字符串的参数不足
有13个键和13个值。
我无法找出我的代码中的错误,有人可以帮助我吗
我也不知道如何管理我的字段中是否有“或”之类的引号,所以任何答案都很好。请查看我在此处给出的类似问题的答案: 对于13个参数,您可以将其修改为如下内容:
cur.execute('UPDATE table_name SET arg1=%s, num=1 where arg2=%s and arg3=%s and ...upto 13 args',(val1, val2,val3,...upto 13 values))
编辑:(1 where子句的13值更新)
好的,但这只是我问题的一部分答案,我不确定链接中是否存在pymysql@code_byterSee EDIT 2的escape_string。你问题的另一部分是关于你提供的参数数量。我仍在试图弄清楚。请稍候。EDIT:我强烈感觉你传递参数的方式就是原因无法获取这13个参数。请尝试分别提供所有13个参数以查看其是否有效。但是,如果我按照您的方式进行操作,我如何进行插入?
cur.execute('UPDATE table_name SET arg1=%s,num=1,其中arg2=%s和arg3=%s和…最多13个参数',(val1,val2,val3,…最多13个值))
请编辑您的答案以使其更清楚一些?
cur.execute('UPDATE table_name SET arg1=%s, num=1 where arg2=%s and arg3=%s and ...upto 13 args',(val1, val2,val3,...upto 13 values))
cur.execute('UPDATE table_name SET arg1=%s, arg2=%s, arg3=%s, ...upto 13 args where where_column=val',(val1, val2,val3,...upto 13 values))