DB Project ----- MySQL & Python Project

这篇具有很好参考价值的文章主要介绍了DB Project ----- MySQL & Python Project。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DB create

DB Project ----- MySQL & Python Project

  • There are many shops in an online retail website. Each shop has a shop id, shop
    name, rating, location, and a list of items on sale in the shop. Each item has an
    item id, name, price, and at most 3 keywords to describe the item, which depend
    on the shop.

  • For every customer, we must capture customer id, telephone number, and address.

  • Each order is made by a customer and must contain at least an item of a shop. An
    order can contain items of different shops.

目前有一个具有以下表结构的MySQL数据库:

  1. shops 表:
    shop_id (主键)
    shop_name
    rating
    location
  2. items 表:
    item_id (主键)
    name
    price
    keyword1
    keyword2
    keyword3
    shop_id (外键)
  3. customers 表:
    customer_id (主键)
    telephone_number
    address
  4. orders 表:
    order_id (主键)
    customer_id (外键)
    item_id (外键)

Note:
每个订单都必须至少包含一件商品,每个订单可以包含来自不同商店的商品。

Python Connect

使用Python中的MySQL连接器(如mysql-connector)来连接到MySQL数据库,并使用SQL语句来查询和操作数据库。

例如,要获取所有商店的名称和评级,您可以使用以下代码:

import mysql.connector

# 创建数据库连接
mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  password="root",
  database="DB Project"
)

# 创建游标对象
mycursor = mydb.cursor()

# 执行查询
mycursor.execute("SELECT shop_name, rating FROM shops")

# 获取查询结果
results = mycursor.fetchall()

# 打印查询结果
for result in results:
  print(result)

Function achieve

DB Project ----- MySQL & Python Project

order cancel

DB Project ----- MySQL & Python Project

  • 添加一个新函数,用于实现订单取消的功能。
  • 该函数需要接受两个参数:订单ID和要取消的商品ID列表。
  • 如果要取消整个订单,商品ID列表应该为空。
def cancel_order(order_id, item_ids):
    """
    取消订单或取消订单中的部分商品
    :param order_id: 要取消的订单ID
    :param item_ids: 要取消的商品ID列表,如果要取消整个订单,应该传入空列表
    :return: 如果取消成功,返回True,否则返回False
    """
    order = get_order(order_id)
    if order is None:
        print("订单不存在")
        return False
    
    # 如果item_ids为空,则取消整个订单
    if not item_ids:
        order["status"] = "canceled"
        update_order(order)
        return True
    
    # 取消部分商品
    items = order["items"]
    for item_id in item_ids:
        for i in range(len(items)):
            if items[i]["id"] == item_id:
                del items[i]
                update_order(order)
                return True
    
    print("商品不存在")
    return False

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

class OrderWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        # ...
        
        # 取消订单按钮
        self.cancel_button = QtWidgets.QPushButton(self)
        self.cancel_button.setGeometry(QtCore.QRect(690, 470, 100, 30))
        self.cancel_button.setText("取消订单")
        self.cancel_button.clicked.connect(self.cancel_order)
        
        # ...
    
    def cancel_order(self):
        # 获取选中的行
        selected_row = self.order_table.currentRow()
        if selected_row == -1:
            QtWidgets.QMessageBox.warning(self, "警告", "请选择要取消的订单")
            return
        
        # 获取订单ID和选中的商品ID
        order_id = self.order_table.item(selected_row, 0).text()
        item_ids = []
        for item in self.order_table.selectedItems():
            if item.column() == 2:
                item_ids.append(int(item.text()))
        
        # 调用cancel_order函数取消订单或商品
        if function.cancel_order(order_id, item_ids):
            self.show_orders()
        else:
            QtWidgets.QMessageBox.warning(self, "警告", "取消订单失败")

Summary:

  1. 创建了一个名为cancel_button的新按钮,并将其放置在窗口底部。
  2. 创建了一个名为cancel_order的新槽函数,该函数将从选中的行和列中获取订单ID和要取消的商品ID,并将它们作为参数传递给cancel_order函数。如果cancel_order函数返回True,则更新订单列表。否则,显示一个错误消息框。

未完待续……文章来源地址https://www.toymoban.com/news/detail-412142.html

到了这里,关于DB Project ----- MySQL & Python Project的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详解MySQL原生Online DDL:从历史演进到原理及使用

    MySQL 中的在线DDL(OnLine DDL)功能是一种强大的工具,可以在不中断表或数据库的情况下进行数据定义语言(DDL)操作。通过在线DDL,使得在对表进行结构变更时,仍然能够进行读写操作,避免了整个表的锁定和阻塞。 MySQL Online DDL 功能从 5.6 版本开始正式引入,发展到现在的

    2024年01月25日
    浏览(40)
  • MySQL8.0中Online DDL也要在业务低峰期执行

    一、背景 MySQL 从 5.6 开始引入了 Online DDL , alter 操作不再阻塞 dml 。在 MySQL 8.0 中,针对 Online DDL 做了进一步优化, alter table 加列操作支持 INSTANT 算法,意思就是使用这个算法进行加列操作只需要修改表的元数据信息,操作瞬间就完成了。在 MySQL 8.0.30 以后, instant 算法支持

    2023年04月25日
    浏览(41)
  • MySQL 8.0 Reference Manual(读书笔记82节-- InnoDB and Online DDL (2))

    The following table provides an overview of online DDL support for column operations. An asterisk indicates additional information, an exception, or a dependency. Operation Instant In Place Rebuilds Table Permits Concurrent DML Only Modifies Metadata Adding a column Yes* Yes No* Yes* Yes Dropping a column Yes* Yes Yes Yes Yes Renaming a column Yes* Yes No Ye

    2024年04月08日
    浏览(78)
  • MySQL 8.0 Reference Manual(读书笔记83节-- InnoDB and Online DDL (3))

    The following table provides an overview of online DDL support for foreign key operations. An asterisk【ˈæstərɪsk 星号(置于词语旁以引起注意或另有注释);】 indicates additional information, an exception, or a dependency. Operation Instant In Place Rebuilds Table Permits Concurrent DML Only Modifies Metadata Adding a foreign key constrain

    2024年04月08日
    浏览(43)
  • MySQL 8.0 Reference Manual(读书笔记81节-- InnoDB and Online DDL (1))

    The online DDL feature provides support for instant and in-place table alterations and concurrent DML. Benefits of this feature include: • Improved responsiveness【rɪ\\\'spɒnsɪvnəs 响应性;灵敏度;敏感性;响应度;易起反应;】 and availability【əˌveɪlə\\\'bɪləti 可利用性;可利用;可用性;有用(效)性;使用价值;(有效

    2024年04月08日
    浏览(40)
  • MySQL 8.0 Reference Manual(读书笔记84节-- InnoDB and Online DDL (4))

    Disk space requirements for online DDL operations are outlined【ˈaʊtlaɪnd 概述;略述;显示…的轮廓;勾勒…的外形;】 below. The requirements do not apply to operations that are performed instantly. • Temporary log files: A temporary log file records concurrent DML when an online DDL operation creates an index or alters a table. The tempora

    2024年04月08日
    浏览(51)
  • mysql library DB实操练习

    1.1 查询库存表中的书号和库存状态列,要求消除重复行 mysql use librarydb; Database changed mysql select distinct 书号,库存状态 from 库存表; +-------+----------+ | 书号  | 库存状态 | +-------+----------+ | A0120 | 在馆     | | A0120 | 借出     | | A0134 | 在馆     | | A0134 | 借出     | | B1101 | 在馆

    2024年02月05日
    浏览(35)
  • 项目介绍:《Online ChatRoom》网页聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

    在当今数字化社会,即时通讯已成为人们生活中不可或缺的一部分。为了满足这一需求,我开发了一个名为\\\"WeTalk\\\"的聊天室项目,该项目基于Spring Boot、MyBatis、MySQL和WebSocket技术,为用户提供了一个实时交流的平台。在本篇博客中,我将介绍该项目的设计和实现,以及其在社交

    2024年02月11日
    浏览(207)
  • Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些?

    Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些? MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储

    2024年02月11日
    浏览(47)
  • db-cdc之mysql 深入了解并使用binlog

      binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、 UPDATE、DELETE…)的二进制日志。实际落库产生的日志(事务提交后)。 我们先看一下 Mysql 数据更新的流程: • 通过如上所述,我们知道binlog是mysql的已提交日志,是实际落库的,那么如

    2024年02月08日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包