pymysql踩坑——1054, "Unknown column 'name' in 'field list'"

MYSQL环境:

  •     MYSQL5.6
  •     PyMySql 0.9.3

出错代码如下:

def marks_insert(name, pos_x, pos_y, start_offset, mark_points):
    global conn
    global cursor
    sql = "insert into marks (name, pos_x, pos_y, start_offset, mark_points)\
          values ({},{},{},{},{});".format(name,pos_x,pos_y,start_offset,mark_points)
    cursor.execute(sql)
    conn.commit()

数据库设计如下:

看出name和mark_points是vchar类型的变量,在python里面name和mark_points用str转换为string类型,但是插入时出现以下错误:

name = 'door'时出现:
1054, "Unknown column 'name' in 'field list'"


mark_points = '[[404,57],[387,436],[613,426],[660,42],[414,50]]'时,出现以下错误:
(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 '[[404, 57], [387, 436], [613, 426], [660, 42], [414, 50]])' at line 1")

经过查阅了mysql如何存储python里的矩阵,也没查到,最后发现,使用的pymysql在插入数据的时候,如果是vchar类型的,需要加入单引号,即name = "'door'",其中还要有一个引号,对应矩阵存储,要先用str()进行转化,然后在加单引号才能成功。

python里面提供了repr()函数可以自动将其加上引号,所以,

解决方案:

def marks_insert(name, pos_x, pos_y, start_offset, mark_points):
    global conn
    global cursor
    sql = "insert into marks (name, pos_x, pos_y, start_offset, mark_points)\
          values ({},{},{},{},{});".format(repr(name),pos_x,pos_y,start_offset,repr(mark_points))
    cursor.execute(sql)
    conn.commit()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值