python3 pymysql已被搞晕

import pymysql
import time
import datetime
# 打开数据库连接
db = pymysql.connect("localhost","root","aaaaaa","getlist" )
cursor = db.cursor()
sql="INSERT INTO t_mall VALUES (0,%s,%s,%s)"
try:
   # 执行SQL语句
   cursor.execute(sql % ('http://baidu.com', '百度', '搜索'))
   # 提交到数据库执行
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()

# 关闭数据库连接
db.close()

执行时无任何错误信息显示,可是数据没有被插入,是什么原因?

阅读 3.5k
5 个回答

可以从这几个角度排查该问题
1、直接打印出execute()内部的sql字符串

检查sql字符串是否有语法错误,如果有错误修改

2、直接手动执行上面打印的sql语句看看能否进入数据库

1若没有问题,则执行2,2能入库则检查数据库连接问题

3、查看curosr是否连接数据库成功。

感觉少了一条命令,没有选择要使用的表:
cursor.execute('use t_mall;')

首先第一次测试 不建议加上try except 这样错误无法显示,你会看不到错误的。

再者看你插入有中文,最好插入前设置字符编码 : cursor.execute('SET NAMES utf8mb4;')

目测,是没有指明插入字段值对应的字段。

这,你要加上table_name(field1, field2...)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题