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

  

python mysql插入数据遇到的错误的更多相关文章

  1. php 解决MySQL插入数据出现 Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误

    在项目中向MySQL插入数据时.发现数据插入不完整,通过调试,发现插入语句也没什么特殊的错误. 可是就是差不进去,于是就打开mysqli错误的调试 $ret = mysqli_query($this- ...

  2. Mysql插入数据里有中文字符出现Incorrect string value的错误

    问题:Mysql插入数据里有中文字符出现Incorrect string value的错误   描述:CMD里直接敲代码插入数据   提示的部分截取为:ERROR 1366 (HY000): Inco ...

  3. MySQL插入数据异常

    MySQL插入数据异常 1.错误如下: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:Dupli ...

  4. 十一、MySQL 插入数据

    MySQL 插入数据 MySQL 表中使用 INSERT INTO SQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下 ...

  5. Python3 多线程(连接池)操作MySQL插入数据

    1.主要模块DBUtils : 允许在多线程应用和数据库之间连接的模块套件Threading : 提供多线程功能 2.创建连接池PooledDB 基本参数: mincached : 最少的空闲连接数, ...

  6. Python MySQL 插入表

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  7. mysql 插入数据失败防止自增长主键增长的方法

    mysql设置了自增长主键ID,插入失败的那个自增长ID也加一的,比如失败5个,下一个成功的不是在原来最后成功数据加1,而是直接变成加6了,失败次数一次就自动增长1了,能不能让失败的不增长的? 或者说 ...

  8. mysql插入数据与删除重复记录的几个例子(收藏)

    mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...

  9. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

随机推荐

  1. CentOS 磁盘阵列(raid10)

    1.通过mdadm命令进行磁盘阵列部署 mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具 如果没有mdadm命令,通过yum安装一下 ...

  2. [HDU4532]湫秋系列故事——安排座位

    题面在这里 description 有\(n\)种颜色的小球,每种颜色的小球有\(a_i\)个: 要把它们摆成一排,求相邻小球颜色不相同的摆放方案数. 任意两个合理的安排方法,只要有一个位置的同学不同 ...

  3. [洛谷P4081][USACO17DEC]Standing Out from the Herd

    题目大意:给你$n$个字符串,对每个字符串求出只在这个字符串中出现的字串的个数 题解:先建广义$SAM$,然后对每个点统计一下它的子树中是不是都是在同一个字符串中的,是的话,就把这个点标成这一个字符串 ...

  4. POJ2079:Triangle——题解

    http://poj.org/problem?id=2079 题目大意:求最大面积的三角形. —————————————————— 可以知道,最大面积的三角形的顶点一定是最大凸包的顶点. 接下来就是O ...

  5. POJ3041:Asteroids——题解

    http://poj.org/problem?id=3041 题目大意:激光可以干掉一整行或一整列陨石,求最少激光次数. —————————————————— 二分图匹配,对于每一个陨石将它的横纵坐标 ...

  6. redux的一些插件总结(redux-actions,reselect)

    redux本身还是过于简单,实际使用的时候需要配合许多插件. 下面是一些插件与vuex的功能对比 redux-actions <=> vuex的mutation的写法 reselect & ...

  7. jenkins实现maven项目自动化部署tomcat

    最近公司有用到jenkins实现自动化部署,这里我对新的东西也是比较感兴趣,就用了点时间尝试了一下,虽然网上有很多这种例子,但是可能有些细节我也走了一些弯路.在这里记录一下,方便下次用到. 实现环境: ...

  8. hdu 1166线段树 单点更新 区间求和

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. bzoj 1221 [HNOI2001] 软件开发 费用流

    [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1938  Solved: 1118[Submit][Status][D ...

  10. [LeetCode] 9. Palindrome Number ☆

    Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could negativ ...