pymysql插入并更新将请求分离为param值



我将我的请求分配给了更多安全性的值,使用pymysql for Python 2.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))

和:

def update(self, request, params):
    print request
    try:
        affected_rows = self.cursor.execute(request, params)
        self.connexion.commit()
        logger.info("Affected rows: " + str(affected_rows))
        return affected_rows
    except Exception as e:
        raise e

第一张印刷给我:

更新组织设置uuid =%s,permaname =%s,name =%s, short_description =%s,description =%s,网站=%s,is_startup = %s,is_corporate =%s,徽标=%s,headCount_min =%s,headCount_max = %s,is_closed =%s,number_of_investments =%s UUID = 3325E470-542A-44CD-B094-3FCFD55555BB32C;

,第二个是:

" C7BA44F9-XXX-4A7B-89B0-XXXXX"," XXX-2", " xxxxxxx"," xxxxxxx是您的更高xxxxxx顾问,指导 您进入xxxright课程和xxxxx和第1号xxxxx网站 在xxxxx。"," xxxxx是您的较高xxxx顾问,指导 您到xxxx xxxx和xxx和noxxxxxxx xxx网站 在xxxxx。","," http://xxxxxxxxxxxx x.my/"," 0"," 1", " http://xxx.xxxxx.xx/t_api_images/xxxxx/rgyzkulb0mslq9qbvien.jpg", " 51"," 100"," 0"," 0"

我有此错误消息:

格式字符串的争论不足:TypeError Trackback(大多数 最近的电话(:文件"/var/task/setter_organizations.py",第38行, 在Handler bustruct_data.Intert((文件中 "/var/task/setter_organizations.py",第109行,in insert self.update([" uuid",uuid](文件"/var/task/setter_organizations.py", 第112行,在Update Self.rds.updateItem中 文件"/var/task/rds/rds.py",第87行,在UpdateEm返回中 self.update(req,(params((文件"/var/task/rds/rds.py",第51行,in 更新E型E TypeError:格式字符串的论点不足

有13个键和13个值。我无法弄清楚我的代码中有什么问题,有人可以帮助我吗?

我也不知道我的领域是如何管理的,所以任何答案都很好。

请查看我在此处给出的类似问题的答案:如何在字符串python中引用之前插入 backslah

对于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))

编辑:( 13的值更新1个子句(

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))

最新更新