#2
厨师王德榜2022-06-09 15:08
手上没有mysql,用sqlite3做了一个库,模拟你的环境,测试可以成功.
你的问题,我想应该是sql语句不对. 我的代码供你参考: 程序代码: # encoding = utf-8 # import pymysql import sqlite3 def openDb(): '''打开数据库连接''' # db = pymysql.connect(host="localhost", user="root", password="root", database="dangjgl",charset="utf8mb4",autocommit=True) dbfile = r"test.db" # 手上没有mysql,用sqlite3做了一个库,模拟你的环境,测试可以成功.这个库中已经建好了一个表info_dangy dbCon0 = sqlite3.connect(dbfile) return dbCon0 def execSql(sql,values): '''执行数据库的增删、改、删操作''' db=openDb() #连接数据库 cursor=db.cursor() #使用cursor()获取操作游标 try: cursor.execute(sql,values) #执行增删改的sql语句 () #提交数据 if sql[:6].upper()=='SELECT': return len(cursor.fetchall()) else: return 1 except: db.rollback() #发生错误时回滚 return -1 #执行失败 finally: cursor.close() #关闭游标 db.close() #关闭数据库连接 def addPerson(list1): name=list1[0] gender=list1[1] education=list1[2] date_cs=list1[3] date_rd=list1[4] post=list1[5] post_dang=list1[6] para2='' if name != "" and date_cs != "" and date_rd != "": #名称及日期不能为空 if getName(name) > 0: #判断党员名是否存在 print("您要添加的党员'%s'已经存在,请重新输入!"%(name)) else: csql = "insert into info_dangy(name,gender,education,date_cs,date_rd,post,post_dang) " + \ "values ('%s','%s','%s','%s','%s','%s','%s')"%(name,gender,education,date_cs,date_rd,post,post_dang) # print(csql) result=execSql(csql, para2) if result >= 0: # 如果结果大于0,说明添加成功 print('提示,信息添加成功!') else: print('请输入数据后,再执行相关操作!') def getName(sname): # 根据编号和性名查询数据,返回-1,查询失败;返回0,查无此人;返回>0,查询到?条记录. para2 = "" result = execSql("select * from info_dangy where name = '%s'"%(sname), para2) # print( result) # 返回查询结果的记录 return result def dropPerson(sname): # 根据编号和性名查询数据,返回-1,查询失败;返回0,查无此人;返回>0,查询到?条记录. para2 = "" if getName(sname) > 0: #判断党员名是否存在 print("您要删除的党员'%s'已存在,程序将尝试删除..."%(sname)) result = execSql("Delete from info_dangy where name = '%s'"%(sname), para2) if result >= 0: # 如果结果大于0,说明添加成功 print('提示,信息删除成功!') else: print("您要删除的党员'%s'不存在!"%(sname)) def updatePerson(list1): name=list1[0] gender=list1[1] education=list1[2] date_cs=list1[3] date_rd=list1[4] post=list1[5] post_dang=list1[6] para2='' if name != "" and date_cs != "" and date_rd != "": #名称及日期不能为空 if getName(name) > 0: #判断党员名是否存在 print("您要添加的党员'%s'已经存在,程序将执行修改!"%(name)) csql = "update info_dangy set name='%s',gender='%s',education='%s',date_cs='%s', \ date_rd='%s',post='%s',post_dang='%s' \ Where name ='%s' "%(name,gender,education,date_cs,date_rd,post,post_dang,name) # print(csql) result=execSql(csql, para2) if result >= 0: # 如果结果大于0,说明修改成功 print('提示,信息修改成功!') else: print("您要修改的党员'%s'不存在,程序将为你添加一条记录!"%(name)) csql = "insert into info_dangy(name,gender,education,date_cs,date_rd,post,post_dang) " + \ "values ('%s','%s','%s','%s','%s','%s','%s')"%(name,gender,education,date_cs,date_rd,post,post_dang) # print(csql) result=execSql(csql, para2) if result >= 0: # 如果结果大于0,说明添加成功 print('提示,信息添加成功!') else: print('请输入数据后,再执行相关操作!') # 用法示例: lst = ['吕一菲','上海','大学','2018-4-24','2019-5-16','1','1'] # print(getName(lst[0])) # 查,返回0或1或-1 # addPerson(lst) # 添加 # updatePerson(lst) # 修改 # dropPerson(lst[0]) # 删除 |
在python tkinter中向mysql数据添加数据,不成功没有报错,请帮我看看,谢谢
import pymysql
def open():
'''打开数据库连接'''
db = pymysql.connect(host="localhost", user="root", password="root", database="dangjgl",charset="utf8mb4",autocommit=True)
return db
def exec(sql,values):
'''执行数据库的增删、改、删操作'''
db=open() #连接数据库
cursor=db.cursor() #使用cursor()获取操作游标
try:
cursor.execute(sql,values) #执行增删改的sql语句
() #提交数据
return 1
except:
db.rollback() #发生错误时回滚
return 0 #执行失败
finally:
cursor.close() #关闭游标
db.close() #关闭数据库连接
def add(self):
name=self.dy_name.get()
gender=self.dy_xb.get()
education=self.dy_edu.get()
date_cs=self.dy_csrq.get()
date_rd=self.dy_rdrq.get()
post=self.dy_gw.get()
post_dang=self.dy_zw.get()
if name != "" and date_cs != "" and date_rd != "": #名称及日期不能为空
if self.getName(name) > 0: #判断党员名是否存在
self.dy_name.delete(0, END) #清空姓名文本框
showinfo('提示', '您要添加的党员姓名已经存在,请重新输入!')
else:
result=service.exec("insert into info_dangy(name,gender,education,date_cs,date_rd,post,post_dang) values (%s,%s,%s,%s,%s,%s,%s)",(name,gender,education,date_cs,date_rd,post,post_dang))
if result > 0: # 如果结果大于0,说明添加成功
showinfo('提示', '信息添加成功!')
else:
showwarning('警告', '请输入数据后,再执行相关操作!')
def getName(self, sid):
# 根据编号和性名查询数据
result = service.query("select * from info_dangy where name = %s", sid)
return len(result) # 返回查询结果的记录