标题:在python tkinter中向mysql数据添加数据,不成功没有报错
只看楼主
wangjx236007
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2021-3-2
结帖率:40%
已结贴  问题点数:10 回复次数:2 
在python tkinter中向mysql数据添加数据,不成功没有报错
在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)  # 返回查询结果的记录
搜索更多相关主题的帖子: db 成功 数据 get 添加 
2022-06-09 10:45
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:10 
手上没有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])  # 删除
2022-06-09 15:08
wangjx236007
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2021-3-2
得分:0 
太感谢了。
2022-06-10 13:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509286-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.085126 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved