pymysql连接mysql数据库try_使用pyMySQL连接数据库时遇到的几个问题

最近几天在折腾MySQL,遇到几个问题,整理一下,环境为python3.4,没有mysqldb,只好用pymysql。

1、使用with pymysql.connect() 语句时,返回的对象是cursor类型,不是connection类型,需要注意一下。

2、想要实现向数据库中添加记录时记录已存在则更新记录的功能,一开始考虑用on duplicate key update语句,但这样产生了一个新的问题,就是这样会导致自增长的主键不连续。产生的原因是因为表锁的机制问题。因为在执行该语句前无法确定是否需要插入新行。这种情况下MySQL默认的做法是先申请一个位置,若是执行insert操作的话就不会有问题,若执行update操作则这个位置就空下了,由此导致自增字段不连续。

有一种解决方法是设置innodb_autoinc_lock_mode=0,但这样可能会在并发插入时出现问题,虽然我的小数据库只有自己在用,为了学习起见还是换个方法……更详细的解释看这里

3、为了让自增长字段连续,最好采用simple insert的方式插入,因此需要用到存储过程来对记录是否存在做判定。

with pymysql.connect(**self.login) as cursor:

info = self.recentMatch()

for i in info:

arg = (ins[0], ins[1], ins[2])

cursor.callproc('updaterecentmatch', arg)

但是执行上述代码时,会报错

网上查了下原因:

首先,参见1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值