[ Pyqt连接数据库/excel ] : 在Pyqt中使用python连接数据库+excel读写并导入mysql+系统登录界面+pyqt多窗口切换。

前言:

        首先本文是自己的智能车系统项目的第三篇文章,换句话说,本文是基于前两篇文章的一个拓展,前两篇文章连接:一:智能车上位机系统,pyqt下的socket通信,python实现服务器+客户端,文本+视频不定长字节传输,超详细,小白都能看懂_pyqt socket上位机显示波形-CSDN博客

二:PyQt5使用matplotlib画图,并嵌入qt控件中,涉及使用消息队列与共享内存来进行进程间通信或线程间通信。-CSDN博客

具体的拓展是增加了数据库来查询对应时间的速度大小,使用数据库(用户登录)限制系统的使用,以及excel表在python中和数据库交互和主题切换的相关内容。

登录效果展示:

数据库管理效果展示:

一:使用pymysql库来在python中使用数据库

  1. 首先你需要安装pymysql库
    pip install pymysql

    安装完成后导入

    import pymysql
  2. 连接数据库
    try:
        db = pymysql.connect(host="你的host地址",user=“用户名”, password=“用户密码”, database=“使用的数据库名称”)
        print('数据库连接成功!')
        #创建游标 
        cur = db.cursor()
    except pymysql.Error as e:
        print('数据库连接失败'+str(e))
  3. 创建表
    cur.execute('''CREATE TABLE speed_trend(sec INT,line FLOAT, ang FLOAT)''')

    其中使用游标中的execute函数。speed_trend为表名,后面的sec为字段名,INT为整型。

  4. 插入数据

    sqlQuery = 'INSERT INTO speed_trend (sec,line,ang) VALUE (%s,%s,%s)'
    value = (1,0.45,0.56)
    cur.execute(sqlQuery,value)
    db.commit()

    其中 VALUE (%s,%s,%s) 必须用%s做占位符。db.commit()十分重要,目的是提交至数据库,没有加它表中是不会更新的。

  5. 更新数据

    sqlQuery = "UPDATE speed_trend SET line= %s WHERE line=%s"
    value = ('0.58', '0.45')
    cur.execute(sqlQuery,value)
    db.commit()

    上述将line等于0.45的替换为0.58

  6. 查找表

    sqlarry = 'SELECT * FROM speed_trend WHERE sec=6}'
    cur.execute(sqlarry)
    res=cur.fetchall()

        res为查找后返回的数据,是一个二维数组,res[0][0]为sec的值,res[0][1]为line的值。查找表是不需要提交数据库,即无需db.commit()

      7. 删除表

sqlQuery = "delete from speed_trend where sec=%s"
value = ('4')
cur.execute(sqlQuery,value)
db.commit()

删除sec=4的那一行。

二:使用pandas操作execl表,并导入数据库     &nbs

你可能感兴趣的:(PyQt系列,项目开发,pyqt,mysql,excel,python,数据库)