Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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 PymySQL将separang请求插入并更新为param值_Python_Sql_Python 2.7_Pymysql - Fatal编程技术网

Python PymySQL将separang请求插入并更新为param值

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

我使用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(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))