python mysql插入数据遇到的错误
2018-06-21 10:11
525 查看
1.数据插入的时候报错:not enough arguments for format string,大概意思就是说没有足够的参数格式化字符串。
我的数据库插入方法是这样的
def add_data(self,data_dic): tables = 'user' keys = ','.join(data_dic.keys()) values = ','.join(['%s'] * len(data_dic)) sql =f'INSERT INTO {tables} ({keys}) VALUES({values}) ON DUPLICATE KEY UPDATE ' update = ','.join([f"{k}='{v}'" for k,v in data_dic.items()]) sql += update try: if self.cursor.execute(sql, tuple(data_dic.values())): print('ok') self.conn.commit() except Exception as e: print(e.args) self.conn.rollback() self.conn.close()
通过调试我得知程序在执行cursor.execute的时候报了该错误。
为了进一步了解原因,我找到了关于实现execute的方法:
def mogrify(self, query, args=None): """ Returns the exact string that is sent to the database by calling the execute() method. This method follows the extension to the DB API 2.0 followed by Psycopg. """ conn = self._get_db() if PY2: # Use bytes on Python 2 always query = self._ensure_bytes(query, encoding=conn.encoding) if args is not None: query = query % self._escape_args(args, conn) return query
通过上面的方法可以的得知,关键的一句话是
query = query % self._escape_args(args, conn)
我要插入最后一个字段中有其中一段文字
厨房和体育健身用品等进口关税平均税率由 15.9%降至7.2%
因为%的原因出错了,所以我尝试这把上面方法修改成下面的方式 使用format去格式化字符串
def add_data(self,data_dic): tables = 'user' keys = ','.join(data_dic.keys()) values = ','.join(['%s'] * len(data_dic)) sql ='INSERT INTO {tables} ({keys}) VALUES({values}) ON DUPLICATE KEY UPDATE '.format(tables=tables,keys=keys,values=values) update = ','.join(["{key}=%s".format(key=key) for key in data_dic]) sql += update try: if self.cursor.execute(sql,tuple(data_dic.values())*2): print('ok') self.conn.commit() except Exception as e: print(e.args) self.conn.rollback() self.conn.close()
相关文章推荐
- 今天遇到Mysql 插入数据里有中文字符出现 Incorrect string value 的错误
- 今天遇到Mysql插入数据里有中文字符出现Incorrect string value的错误
- Python将数据插入到数据库时遇到单引号插入错误的问题
- python插入数据到mysql中乱码问题
- python mysql插入多条数据
- MySql插入数据成功但是报[Err] 1055错误的解决方案
- python调用mysql命令查询和插入表数据(python练手)
- python 连接mysql数据建立表并插入数据详解
- python 向MySQL里插入中文数据
- Mysql插入数据里有中文字符出现Incorrect string value的错误
- python往mysql中插入datetime类型的数据
- mysql在插入中文和空格时 text数据类型报mysql incorrect string value .....错误!
- python往mysql中插入数据时,中文乱码的问题
- Mysql插入数据错误
- python爬取微博图片数据存到Mysql中遇到的各种坑\python Mysql存储图片
- python mysql 插入的数据是字典时,可以直接插入到数据库,不要进行for循环读取每一个字段
- python 批量数据插入数据库 遇到(TypeError: expecting numeric data)
- mysql出现1067异常或1366错误的解决方案(字符集冲突导致插入数据异常)
- 记录用pip安装mysql-python (MySQLdb) 遇到的错误的解决方案
- ssh开发中插入数据时遇到 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right