whfi_
whfi_
采纳率0%
2017-07-20 06:37 阅读 7.4k

python pymysql cursor.execute()格式化字符串报错

conn=#连接好的数据库
cursor=conn.cursor()
cursor.executr(sqls)
这个句子如果将sql语句作为sqls变量

 import pymysql
 conn=pymysql.connct(数据库配置)
 cursor=conn.cursor()
 sqls='selcet * from table where 条件=%s'%condition
 cursor.execute(sqls)
 #将字符串格式化的sql语句作为变量传入execute里面,如果上面的conditin是数字条件就不会报错,如果是字符串条件就会报错

 #如果不用字符串格式化将sql语句作为字符串直接传入execute里面,
 cursor.execute("""select * from table where condition""")
 #就不会报错  

.format我试了跟上面情况一样,也不行
这个是什么原因?求大神解答

pymysql.err.InternalError: (1054, "Unknown column '兴瀚资管' in 'where clause'")

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • oyljerry oyljerry 2017-07-20 07:38

    这个列兴瀚资管'估计编码有问题,用utf8编码一下, 为了简单,最好列名用英文,这样可以少很多问题

    点赞 1 评论 复制链接分享
  • baidu_39591849 baidu_39591849 2019-05-16 14:04

    少个引号,%s过去的字符串不会有引号的
    比如"select * from table when a=%s"%'b'就会变成:
    select * from table when a=b
    实际上应该是
    select * from table when a='b'才对

    点赞 评论 复制链接分享
  • weixin_42635922 Lewis 2020-02-11 10:01

    你没有写sqls的内容具体是什么。我刚开始学sql,教程里是这样写的

    sql = 'SELECT * FROM `student` ORDER BY `db_id` LIMIT %s, %s;'
    cursor = conn.cursor()
    cursor.execute(sql, (offset, pagesize))  # 这里用元组的形式传入参数
    

    另外你的拼写有错误,一般IDE应该会提示语法错误的

    点赞 评论 复制链接分享

相关推荐