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语句完全没错,但是总是出错,解决这类问题可以使用问题一中的解决方法。

猜你喜欢

转载自blog.csdn.net/nonoroya_zoro/article/details/80149068