python实现画板功能并操作数据库
'''
实现简单画板功能并存储线段信息
'''
import sys
import time
import pymysql.cursors
from PyQt5.QtWidgets import (QApplication, QWidget)
from PyQt5.QtGui import (QPainter, QPen)
from PyQt5.QtCore import Qtconnect = pymysql.Connect(host='localhost',port=3306,user='edu',passwd='123456',db='test',charset='utf8'
)# 获取游标
cursor = connect.cursor()class Example(QWidget):def __init__(self):super(Example, self).__init__()#resize设置宽高,move设置位置self.resize(400, 300)self.move(100, 100)self.setWindowTitle("简单的画板1.0")#setMouseTracking设置为False,否则不按下鼠标时也会跟踪鼠标事件self.setMouseTracking(False)#设置两个变量接收移动中的点的x、y坐标self.pos_x = 20self.pos_y = 20def paintEvent(self, event):painter = QPainter()painter.begin(self)pen = QPen(Qt.black, 2, Qt.SolidLine)painter.setPen(pen)#定点(20, 20) 到 (self.pos_x, self.pos_y)之间画线painter.drawLine(20, 20, self.pos_x, self.pos_y)painter.end()def mouseMoveEvent(self, event):'''按住鼠标移动事件:更新pos_x和pos_y的值调用update()函数在这里相当于调用paintEvent()函数每次update()时,之前调用的paintEvent()留下的痕迹都会清空'''self.pos_x = event.pos().x()self.pos_y = event.pos().y()self.update()line_end_x = event.pos().x()line_end_y = event.pos().y()# 先看一下有没有线段信息,没有则创建sql = "SELECT count(*) FROM line WHERE line_name = '%s' "data = ('line1',)cursor.execute(sql % data)rowcount = cursor.fetchall()[0][0]print('共查找出', rowcount, '条数据')if (rowcount == 0):# 插入数据sql = "INSERT INTO line (line_name, line_start_x, line_start_y,line_end_x,line_end_y) VALUES ( '%s', '%d','%d','%d' ,'%d' )"data = ('line1', 20, 20, 20, 20)cursor.execute(sql % data)connect.commit()print('成功插入', cursor.rowcount, '条数据')else:sql = "UPDATE line SET line_end_x = %d,line_end_y=%d,update_time='%s' WHERE line_name = '%s' "now = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())print(now)data = (line_end_x, line_end_y, now, 'line1',)cursor.execute(sql % data)connect.commit()print('成功修改', cursor.rowcount, '条数据')if __name__ == "__main__":app = QApplication(sys.argv)pyqt_learn = Example()pyqt_learn.show()app.exec_()# 关闭连接cursor.close()connect.close()
python实现画板功能并操作数据库相关推荐
- python大佬养成计划----flask_sqlalchemy操作数据库
flask_sqlalchemy 使用对象关系映射(Object-Relational Mapper, ORM)框架,它将低层的数据库操作指令抽象成高层的面向对象操作.也就是说,如果我们直接使用数据库 ...
- 关键词爬虫,Python花瓣画板关键词采集存储数据库
想要寻找图片的小伙伴们应该不会错过这个网站,对,没错,就是花瓣网,各种图片应有尽有,而花瓣网的推荐画板里面的词还是非常不错的,可惜被和谐了不少,想要采集花瓣画板的词,python爬虫当然是没问题的,花 ...
- python中登录、注册操作数据库
# 1.注册.登录# 1.注册的时候存账户密码到数据库里面,密码存密文,要加盐# 2.登录的时候账号.密码从数据里面取,登录失败一次,错误次数 + 1,错误次数大于3不让登录# 1.建表 id,use ...
- python fetchall方法_python3.5操作数据库中fetchall的问题
import pymysql.cursors import networkx as nx Connect to the database connection = pymysql.connect(ho ...
- Python基础入门自学——19--访问数据库
继续前面的工作需求解决: 具体项目3:对于每个单位的考核结果进行分析,如果连续2个月出现红牌,要给与警告,连续3个月及以上的,要处罚,我们要实现的就是给出提示,连续2次出现红牌的月份,连续3次出现红牌 ...
- python如何连接数据库_python如何访问数据库
1.背景: python提供了很多数据库接口, 常用的数据库有 MS SQL Server /mysql /oracle 等. 打开链接 https://wiki.python.org/moin/Da ...
- python实现数据库事务回滚_使用Python脚本实现MySQL误操作的快速回滚
1.简介 在Oracle数据库中,当一个误操作被提交后,我们可以通过Oracle提供的闪回功能将表闪回至误操作之前的状态.mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是 ...
- [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- oracle数据库更新语句_20_手把手教你学Python之操作数据库
数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等.数据库的主要特点: 以一定的方式组织.存储数据: 能为多个用户共享: 与程序彼此独立. -- 数据 ...
- python与数据库完整项目_python入门:操作数据库项目实例分享
本文根据一个项目实例,记录分享一下python将数据库的内容提取显示到程序界面的过程及相关设置,探索python操作数据库的用法. 主要分享内容: 1.显示数据库内容. 2.修改数据库内容. 3.表格 ...
最新文章
- python2.7环境下“No module named matplotlib.pyplot”的解决办法
- 作业帮:字符串反转(头部插入)
- 算法之【辗转相除法】
- [asp.netMVC]通过configSource提高web.config配置灵活性
- 零基础学python电子书-零基础学Python
- excel不显示0_【扫盲】小白必看:excel表里数字格式常见的几种错误?
- appium入门篇(2)--desired capabilities
- Java高质量20问
- python读取dbf并导出excel格式_Python导出DBF文件到Excel的方法
- R语言和Rtools的详细下载安装教程
- 用Java写一个随机排序的功能
- unity 裙子摆动_Unity中实现MMD效果
- 【弹出USB大容量存储设备时出问题】两步搞定
- 通过v$bgprocess查看后台进程
- win10 启动后无法正常显示桌面/黑屏
- 【MySQL】MySQL的锁与事务隔离级别详解
- win7下笔记本电脑给手机开热点
- Log-Euclidean metric on Riemannian manifold 黎曼流形上的Log-Euclidean测度
- 学生用计算机怎么调,学生计算器怎么调时间
- 初学OpenGL(7):颜色和光照
热门文章
- SuspendLayout,ResumeLayout,Layout,PerformLayout
- 【Webcam设计】总结与代码仓库
- jQuery事件委托
- innodb redo buffer的认识
- 凸优化第二章凸集 2.3 保凸运算
- 年入百万的表弟给我上一课:互联网思维该怎么接地气
- spring读取jdbc(file方式)
- 第三百四十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制...
- 主机网络切换后,docker toolbox里的容器网络不通了,解决方法
- Xshell中文乱码怎么处理?