pymysql 中总结出来的一些问题

在这用到pymysql为例,其他的可作为参考。

  • 一、关于(1054, "Unknown column 'xxxxxxx' in 'field list'")

如果你写的是下面这样的话,以后记住别这样写了:

add_produto = """INSERT INTO produto(nome,
                 data_lcm, preco)
                 VALUES (%s, %s, %s)"""% (va, 'input_date', 'vc')

cursor.execute(add_produto)

改为:

add_produto = """INSERT INTO produto(nome,
                 data_lcm, preco)
                 VALUES (%s, %s, %s)"""

cursor.execute(add_produto, (va, input_date, vc))

为什么呢?

首先,这听起来像是你的问题是如何在Python和SQL数据类型之间进行转换,引用和正确地转义等等。数据库引擎已经知道如何做到这一点,所以只要让它为你做。 简单点的意思就是不用你用% (va, 'input_date', 'vc')来进行转换,只需要将你定义的值在execute方法里面进行引用就好了,你自己去定位值有点多此一举了。

  • 二、关于'latin-1' codec can't encode characters in position 60-62: ordinal not in range(256)的错误

这是编码问题,解决方法很简单。connect方法中加入charset=‘编码’例如:

db = pymysql.connect("localhost", "root", "root", "xxxxx",charset='utf8')

只需要在连接时加上编码格式就好了,如果你是其他编码按你的要求改就好,因为在创建数据库时你设置了数据库编码。



  • 三、关于(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1")问题

需要去检查你的sql语句有没有问题,一般存在较多的问题是单引号‘和`的问题,还有空格的问题,`是~的英文键,如果自己找的话,肯定觉得自己的sql语句完全没错,但是总是出错,解决这类问题可以使用问题一中的解决方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值