Cont. DB Project ----- MySQL Python Project

news2025/1/25 9:15:59

Function achieve (Cont.)

在这里插入图片描述

Item Search

在这里插入图片描述

  • 添加一个新函数search_item,用于实现商品搜索的功能。
  • 参数:keyword (为了模糊查询)
# search items by keywords
def search_item(keyword):
    cursor, db = connect_database()
    sql = f"SELECT * FROM item WHERE itemName LIKE '%{keyword}%'"
    results = ""
    try:
        cursor.execute(sql)
        results = cursor.fetchall()
    except:
        print("Error: unable to fetch data")
    db.close()
    return results

在OrderWindow类中添加一个新按钮和相应的槽函数,用于调用刚刚添加的search_item函数。

def search_item_button(self):
    # clean the widget
    self.ui.searchResult_table.setRowCount(0)
    # set widget column as 4
    self.ui.searchResult_table.setColumnCount(4)
    self.ui.searchResult_table.setHorizontalHeaderLabels(['Item ID', 'Item Name', 'Price', 'Description'])
    # Horizontal autofill
    self.ui.searchResult_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
    keyword = self.ui.searchInput_text.text()
    items = functions.search_item(keyword)

    for i in range(len(items)):
        item = items[i]
        row = self.ui.searchResult_table.rowCount()
        self.ui.searchResult_table.insertRow(row)
        for j in range(len(item)):
            item = QTableWidgetItem(str(items[i][j]))
            self.ui.searchResult_table.setItem(row, j, item)


Summary:

  1. 名为search_item_button的按钮
  2. 创建了一个名为search_item的新槽函数

Item Purchase

  • 添加新函数add_purchase,用于实现商品购买的功能。
  • 参数:customer_id, item_id
# Add purchase record to database
def add_purchase(customer_id, item_id):
    cursor, db = connect_database()
    sql = f"INSERT INTO purchase (customer_id, item_id) VALUES ({customer_id}, {item_id})"
    try:
        cursor.execute(sql)
        db.commit()
        db.close()
        return "Purchase added successfully."
    except:
        db.rollback()
        db.close()
        return "Error: Unable to add purchase record."
  • 添加新函数get_all_purchases,用于实现order records查看的功能。
# Retrieve all purchases from database
def get_all_purchases():
    cursor, db = connect_database()
    sql = "SELECT customer.name, item.name FROM purchase INNER JOIN customer ON purchase.customer_id=customer.id INNER JOIN item ON purchase.item_id=item.id"
    cursor.execute(sql)
    results = cursor.fetchall()
    db.close()
    return results

在OrderWindow类中添加一个新按钮和相应的槽函数,用于调用刚刚添加的add_purchase函数和get_all_purchases函数。

def purchase_item(self):
    # Get selected customer and item from the UI
    selected_customer = self.ui.customerList.currentItem().text()
    selected_item = self.ui.itemList.currentItem().text()

    # Get the customer id and item id from the database
    customer_id = functions.get_customer_id(selected_customer)
    item_id = functions.get_item_id(selected_item)

    # Add the purchase record to the database
    message = functions.add_purchase(customer_id, item_id)
    QMessageBox.about(self, "Message", message)

def show_all_purchases(self):
    #clean this widget
    self.ui.purchase_table.setRowCount(0)
    #set widget colummn as 2
    self.ui.purchase_table.setColumnCount(2)
    self.ui.purchase_table.setHorizontalHeaderLabels(['Customer','Item'])
    #Horizontal autofill
    self.ui.purchase_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

    purchases = functions.get_all_purchases()

    for i in range(len(purchases)):
        row = self.ui.purchase_table.rowCount()
        self.ui.purchase_table.insertRow(row)
        for j in range(len(purchases[i])):
            item = QTableWidgetItem(str(purchases[i][j]))
            self.ui.purchase_table.setItem(row, j, item)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

milovski-V-XXXXXX勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

目录 前言: 一、勒索病毒milovski-V-XXXXXXXX的危害 二、milovski-V-XXXXXXXX勒索病毒的数据恢复方法 三、milovski-V-XXXXXXXX勒索病毒加密数据恢复案例 四、如何防范勒索病毒攻击 前言: 在当今互联网时代,勒索病毒已成为企业信息安全面…

掌握机器学习中的“瑞士军刀”XGBoost,从入门到实战

文章目录1 XGBoost简介2 XGBoost的算法优势3 安装XGBoost库4 回归模型5 分类模型6 XGBoost调参作为机器学习领域中的“瑞士军刀”,XGBoost在各大数据科学竞赛中屡获佳绩。本篇博客将为大家介绍如何使用Python中的XGBoost库,从入门到实战掌握XGBoost的使用…

iot-Scada免费Scada组态软件系列教程4-二次开发与版本部署

iot-Scada免费Scada组态软件系列教程 系列文章目录 iot-Scada免费Scada组态软件系列教程1-初识iot-Scada iot-Scada免费Scada组态软件系列教程2-架构设计 iot-Scada免费Scada组态软件系列教程3-各模块详细介绍 iot-Scada免费Scada组态软件系列教程4-二次开发与版本部署 前言…

p73 应急响应-WEB 分析 phpjavaweb自动化工具

数据来源 应急响应: 保护阶段(护案发现场,断网防止持续渗透,数据备份恢复),分析阶段(找到漏洞),复现阶段(复现攻击过程),修复阶段&am…

QML控件--DialogButtonBox

文章目录一、控件基本信息二、控件使用三、属性成员四、附加属性成员五、成员函数六、信号一、控件基本信息 Import Statement:import QtQuick.Controls 2.14 Since:Qt 5.8 Inherits:Container 二、控件使用 DialogButtonBox:是…

基于 VITA57.4 标准的单通道 6GSPS 12 位采样 ADC,单通道 6GSPS 16 位采样 DAC 子卡模块

概述 FMC147 是一款单通道 6.4GSPS(或者配置成 2 通道 3.2GSPS)采样率的 12 位 AD 采集、单通道 6GSPS(或配置成 2 通道 3GSPS) 采样率 16 位 DA 输出子卡模块,该板卡为 FMC标准,符合 VITA57.4 规范&#x…

业务项目管理软件使用推荐

使用Zoho Projects的运营项目管理简化任务并最大限度地利用资源,该管理已被全球200,000多家公司选中。 一、带领您的团队取得更好的成果 Zoho Projects的多功能业务项目管理软件可帮助您的团队在所有运营流程中保持一致。监控您的运营团队的工作流程以确保每个项目顺…

IGKBoard(imx6ull)-Linux下TTY串口编程

文章目录一、TTY介绍(1)理解tty(2)tty设备节点二、tty串口应用编程(1)串口基本操作【1】打开串口【1】读写数据【1】关闭串口(2)termios 结构体(配置)&#x…

如何处理后端返回的复杂数据

将接口的复杂数据结构映射成简单的数据结构 假设我们有一个API,返回以下数据: {"id": 1,"name": "Example API","process_params": {"param1": {"name": "Parameter 1","…

企业数字化转型有哪些好处?

从马车到汽车,从写信到智能手机,每一次技术革新所带来的都是生产力大发展,小到个人、家庭,大到企业、国家,都在每一轮技术革新中获得了好处。 可以说,现在的企业数字化转型,就像是企业管理“工具…

从0学习stm32

1.STM32介绍: ST:指的是意法半导体; M:指定微处理器 使用的是ARMCortex-M3 ARM分成三个系列: Cortex-A: 针对多媒体应用(手机) Cortex-R:针对对实时性和性能有一定要求的场景 Cortex-M:针对低功耗高性…

基于html+css的自适应展示4

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【案例实践】R语言多元数据统计分析在生态环境中的实践应用

查看原文>>>R语言生物群落分析绘图、多元统计分析、CMIP6、遥感碳储量、GEE林业、InVEST等 生态环境领域研究中常常面对众多的不同类型的数据或变量,当要同时分析多个因变量(y)时需要用到多元统计分析(multivariate sta…

vite+vue3+ts搭建项目八(打包性能优化三:使用CDN)

vitevue3ts搭建项目八(打包性能优化三:使用CDN) 本文目录vitevue3ts搭建项目八(打包性能优化三:使用CDN)使用vite-plugin-cdn-import下载npm包在vite.config.ts中通过importToCDN引入CDN参数获取方式可用的…

【事务】本地事务和分布式事务的区别

整理下事务相关的知识点: 文章目录一、事务MySQL事务事务的实现事务的ACID特性事务的隔离级别二、本地事务三、分布式事务认识分布式事务CAP理论BASE理论一、事务 先复习下数据库中学到的事务: MySQL事务 一个事务即一个完整的业务逻辑,如…

计算机组成原理——第三章存储系统(下)

提示:年年岁岁花相似,岁岁年年人不同 文章目录3.4.1 磁盘存储器3.4.2 固态硬盘SSD3.5.1 Cache的基本概念和原理3.5.2 Cache和主存的映射方式3.5.3 Cache替换算法3.5.4 Cache写策略3.6.1 页式存储3.6.2 虚拟存储器3.4.1 磁盘存储器 我们在磁性盘面上涂磁…

【hello Linux】Linux下 gitee 的使用

目录 1. 安装 git 2. gitee 的使用 2.1 注册 gitee 账号 2.2 创建项目:也就是仓库 2.3 下载项目到本地 3. 上传gitee三步走 3.1 三板斧第一招:git add 3.2 三板斧第二招:git commit 3.3 三板斧第三招:git push Linux&#x1f337…

【JavaEE】Spring项目的创建与使用

目录 创建Spring项目 创建Maven项目 引入依赖 使用镜像下载 下载依赖 添加启动类 使用Spring项目 创建Spring配置文件 存储Bean 取出并使用Bean(通过ApplicationContext接口) 通过id 通过class 通过classid(推荐) 取出并使用Bean(通过BeanFactory接口) Applicat…

从零入门激光SLAM(六)——ROS常用工具箱

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激…

【react 全家桶】组合组件

本人大二学生一枚&#xff0c;热爱前端&#xff0c;欢迎来交流学习哦&#xff0c;一起来学习吧。 <专栏推荐> &#x1f525;&#xff1a;js专栏 &#x1f525;&#xff1a;vue专栏 &#x1f525;&#xff1a;react专栏 文章目录09 【组合组件】1.包含关系2.特例关系问题…