python连接Mysql数据库写的小电话本

先不说了,先把代码放这,等有时间再说明程序里的问题,

这个小程序知识把功能实现,并没有对布局方面有太多追求

有些注释掉的也没有删除,也没有个函数包起来,整体看着

应该是有点乱

以下是完整代码,

import tkinter
import pymysql
from tkinter import *
from tkinter import  ttk
window=tkinter.Tk()#创建窗口

window.title("电话簿")#设置标题
window.geometry(‘500x500+500+200‘)#设置大小偏移量
window.resizable(width=False,height=False)#禁用宽高
database = pymysql.connect(host="localhost", user="root", password="******",
                               db="phonebook", port=3306, charset="utf8")

ListN=ttk.Treeview(window)
ListN=ttk.Treeview(window,show="headings",height=10,columns=("a","b","c","d"))
#ListN["columns"]=("a","b","c","d")
ListN.column("a",width=60)
ListN.column("b",width=100)
ListN.column("c",width=120)
ListN.column("d",width=200)
ListN.heading("a",text="姓名")
ListN.heading("b",text="电话")
ListN.heading("c",text="邮箱")
ListN.heading("d",text="住址")
ListN["selectmode"]="browse"
def DeleteInfo(name,phone):
    sql_delete=r"delete from info where name=‘%s‘ "                r"and phone=‘%s‘;" % (name,phone)
    cur=database.cursor()
    try:
        cur.execute(sql_delete)
        database.commit()
    except Exception as e:
        database.rollback()
    cur.close()
def ListAll():
    sql_sel_all="select * from info;"
    cur=database.cursor()
    try:
        cur.execute(sql_sel_all)
        results=cur.fetchall()
        #print("姓名","电话","邮箱","住址")

        #首先删除表格中的原节点数据
        for _ in map(ListN.delete,ListN.get_children("")):
            pass

        ii=0
        for row in results:
            name=row[0]
            phone=row[1]
            mail=row[2]
            address=row[3]
            #print(name,phone,mail,address)
            ListN.insert("",ii,text=ii+1,values=(name,phone,mail,address))
            ii=ii+1
    except Exception as e:
        raise e
    cur.close()
def InsertInfo(name,phone,mail=None,address=None):
    sql_insert=r"insert into info (name,phone,"                r"mail,address) values (‘%s‘,‘%s‘,‘%s‘,"                r"‘%s‘);" % (name,phone,mail,address)
    cur=database.cursor()
    try:
        cur.execute(sql_insert)
        database.commit()
    except Exception as e:
        database.rollback()
    cur.close()
def Nodes():
    notenote1="说明:"
    notenote2="     添加联系人时至少输入姓名和电话"
    notenote3 ="     邮箱和住址可以省略,可以添加同名"
    notenote4 ="     但不能添加同名,同电话的信息"
    notenote5 ="删除时只需选中要删除的项,然后点击"
    notenote6 ="删除联系人按钮即可删除"
    note1=Label(window,text=notenote1)
    note1.pack()
    Label(window,text=notenote2).pack()
    Label(window,text=notenote3).pack()
    Label(window,text=notenote4).pack()
    Label(window,text=notenote5).pack()
    Label(window,text=notenote6).pack()
    pass
#创建子窗口
def zwindow():

    zwin = tkinter.Tk()
    zwin.title("添加")
    zwin.geometry(‘350x200+520+350‘)
    zwin.resizable(width=False,height=False)
    Ln=Label(zwin,text="姓名")
    Lp=Label(zwin,text="电话")
    Lm=Label(zwin,text="邮箱")
    La=Label(zwin,text="地址")
    Ln.grid(row=0)
    Lp.grid(row=1)
    Lm.grid(row=2)
    La.grid(row=3)
    e1=Entry(zwin)
    e2=Entry(zwin)
    e3=Entry(zwin)
    e4=Entry(zwin)
    e1.grid(row=0,column=1)
    e2.grid(row=1,column=1)
    e3.grid(row=2,column=1)
    e4.grid(row=3,column=1)

    def InsertI():
        InsertInfo(e1.get(), e2.get(), e3.get(), e4.get())
        zwin.destroy()
        ListAll()
    YButton=Button(zwin,text=‘确定‘,command=InsertI)
    NButton=Button(zwin,text=‘取消‘,command=zwin.destroy)
    YButton.grid(row=4,column=1,padx=3)
    NButton.grid(row=4,column=2)
def Delete():
    #ListN.
    items=ListN.selection()#返回被选中行的ID
    Delete_name=ListN.item(items)["values"][0]
    Delete_phone=ListN.item(items)["values"][1]
    #print(items)
    #print(ListN.item(items))
    #print(Delete_name)
    #print(Delete_phone)
    DeleteInfo(Delete_name,Delete_phone)
    ListAll()
    pass
InsertB=Button(window,text=‘添加联系人‘,command=zwindow)
DeleteB=Button(window,text=‘删除联系人‘,command=Delete)
ListAll()
ListN.pack()
InsertB.pack()
DeleteB.pack()
Nodes()
window.mainloop()

另外附一个 练习 连接数据库时的代码:

# coding = utf-8
import pymysql
#连接数据库
database=pymysql.connect(host="localhost",user="root",password="******",
                         db="pydata",port=3306)
cur=database.cursor()

print("#1.首先查询数据库")
sql="select * from info"
try:
    cur.execute(sql)
    results=cur.fetchall()
    print("姓名","ID")
    for row in results:
        name=row[0]
        id=row[1]
        print(name,id)
except Exception as e:
    raise e
print("#2.插入数据")
sql_in_name=input("请输入要插入的姓名:")
sql_in_id=input("请输入要插入的ID:")
sql_insert=r"insert into info (name,id) values (‘%s‘,‘%s‘);" % (sql_in_name,sql_in_id)
try:
    cur.execute(sql_insert)
    database.commit()
except Exception as e:
    database.rollback()
print("验证插入")
try:
    cur.execute(sql)
    results=cur.fetchall()
    #print("姓名","ID")
    for row in results:
        name=row[0]
        id=row[1]
        print(name,id)
except Exception as e:
    raise e

原文地址:https://www.cnblogs.com/khzf/p/8858630.html

时间: 2024-08-30 12:27:56

python连接Mysql数据库写的小电话本的相关文章

Python连接MySQL数据库之pymysql模块使用

Python连接MySQL数据库之pymysql模块使用 Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数据库. PyMySQL安装 pip install pymysql 连接数据库 注意事项 在进行本文以下内容之前需要注意: 你有一个MySQL数据库,并且已经启动. 你有可以连接该数据库的用户名和密码 你有一个有权限操作的datab

Python连接Mysql数据库(Debian)

Python连接Mysql数据库(Debian) 以下是Python 2.*版本的安装方法,MySQL-python暂不支持Python 3.*版本 提前要做的工作: 安装setuptools,在终端中运行 wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python 安装pip,下载“get_pip.py”,运行 python get_pip.py 运行如下命令装好必要的包 sudo apt-get install python-d

[笔记]--在Ubuntu系统用Python连接Mysql数据库

环境:Ubuntu11.10,Python2.7,Mysql5.0.95 在Ubuntu终端输入命令安装Python的Mysql模块 sudo apt-get install python-mysqldb 就这么简单: 运行一下脚本: #!/usr/bin/python #-*-coding=utf-8# # import MySQLdb cn = MySQLdb.Connection(host="192.168.88.124",user="root",passwd

python连接mysql数据库——版本问题

今天终于解决了使用python连接数据库不成功的问题,现将过程总结如下: 一.出现的问题 在使用python连接mysql数据库是一直出现如下问题: 1.只能连接到我数据库中的的第一个数据库,但是不能操作里面的表,会报错表不存在.(表是存在的)2.更换其他数据库后,直接报错找不到该数据库.(数据库和表均存在) 运行连接数据库的代码,会出现: conn = pymysql.connect(user='root', password='password', database='XXX') Trace

Python连接MySQL数据库执行sql语句时的参数问题

由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入字符串 try: connection = MySQLdb.connect(user="secsel",passwd="[email protected]",host="192.168.138.55",db="anbench")

python入门(十七)python连接mysql数据库

mysql 数据库:关系型数据库mysql:互联网公司 sqllite:小型数据库,占用资源少,手机里面使用oracle:银行.保险.以前外企.sybase:银行+通信 互联网公司key:valuemongodb:磁盘上redis:内存数据库,持久化memchache:内存数据库 mysql -uroot -p密码装完了之后,cmd下输入mysql命令,需要将安装目录下的bin目录( mysql.exe 所在的目录)加入到path中 本地连接 mysql -uroot -p mysql -h12

寒假学习进度-6(Python连接MySQL数据库)

Python连接mysql和操作 软件:pycharm 开始在pycharm下面的Terminal中安装mysql时提醒pip版本不够,所以需要先升级一下pip python -m pip install --upgrade pip 升级完pip之后就可以下载mysql pip install mysql 下载完成后在setting中查看 进行代码测试 #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb db =MySQLdb.con

python连接mysql数据库(MySQL)

在介绍python在数据库中的操作之前先简单介绍点mysql中的操作语言: [[email protected] 2018-01-24]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 194 Server version: 5.6.16 Source distribution Copyright (c) 2

用Python 连接mysql数据库

你必须下载一个单独的DB API的模块,你需要访问的每个数据库.例如,如果你需要访问Oracle数据库以及MySQL数据库,你必须下载Oracle和MySQL数据库模块. DB API提供了与数据库的工作,尽可能使用Python的结构和语法的最低标准.这个API包括以下: 导入API模块. 获取与数据库的连接. 发出SQL语句和存储过程. 关闭连接 检验MySQLdb模块是否安装成功: #!/usr/bin/env python import MySQLdb 如果它产生以下结果,那么它意味着未安