db = pymysql.connect(host='localhost', port=3306, db='crime', user='qingying', password='123456') cursor = db.cursor() # 使用cursor()方法获取操作游标 sql1 = "INSERT INTO criminal(id, name, sex, cause, time1, time2, nei, lao, tai) \ VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')" % \ (self.var_id.get(), self.var_name.get(), self.var_sex.get(), self.var_cause.get(), self.var_time1.get(), self.var_time2.get(), self.var_nei.get(), self.var_lao.get(), self.var_tai.get()) # SQL 插入语句 sqls = "INSERT INTO 'criminal_id' VALUES ('%s', '123456')" % (self.var_id.get()) try: cursor.execute(sql1) # 执行sql语句 cursor.execute(sqls) db.commit() # 提交到数据库执行 except: db.rollback() # 发生错误时回滚 messagebox.showinfo('警告!', '数据库连接失败!') db.close() # 关闭数据库连接
时间: 2024-03-15 21:42:59 浏览: 112
解决pymysql cursor.fetchall() 获取不到数据的问题
这段代码似乎是 Python 中的 tkinter 模块,用于将数据插入到名为 criminal 的表和 criminal_id 的表中。其中,criminal 表的列包括 id、name、sex、cause、time1、time2、nei、lao 和 tai;criminal_id 表的列包括 id 和 pass。这里使用了 pymysql 模块来连接 MySQL 数据库,并使用 cursor() 方法创建了游标对象。
在插入数据时,使用了字符串格式化来构建 SQL 插入语句,其中 %s 是用于占位符的。实际值从变量 self.var_id、self.var_name、self.var_sex、self.var_cause、self.var_time1、self.var_time2、self.var_nei、self.var_lao 和 self.var_tai 中获取。对于 criminal_id 表,固定值 '123456' 被硬编码到 SQL 语句中。
使用 try-except 块来捕获可能发生的异常,并在错误发生时回滚事务。如果插入成功,则提交到数据库中,并使用 messagebox.showinfo() 方法显示一个消息框,以提示用户数据插入成功。最后,关闭游标和数据库连接。
需要注意的是,这里使用了字符串拼接来构建 SQL 语句,存在 SQL 注入的风险。建议改用参数化查询的方式,将变量值作为参数传递给 execute() 方法,以避免 SQL 注入攻击。另外,建议对数据库连接和操作进行错误检查,以提高程序的健壮性。
阅读全文