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

  • 相关阅读:
    Java设计模式系列之策略模式
    设计模式系列之热身
    算术表达式系列之后缀表达式求值
    算术表达式系列之中缀表达式转后缀表达式
    Maven下使用Junit对Spring进行单元测试
    Windows命令行使用总结(持续更新)
    Eclipse中web项目部署至Tomcat步骤
    MyBatis保存完整日期的解决方法
    Redis(一)源码安装
    【集成学习】sklearn中xgboost模块中plot_importance函数(绘图--特征重要性)
  • 原文地址:https://www.cnblogs.com/hecxx/p/11959857.html
Copyright © 2020-2023  润新知