続き DB プロジェクト ----- MySQL および Python プロジェクト

機能達成(続き)

ここに画像の説明を挿入します

アイテム検索

ここに画像の説明を挿入します

  • 製品検索機能を実装するための新しい関数 search_item を追加します。
  • パラメータ: キーワード (ファジークエリ用)
# 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)


まとめ:

  1. という名前のsearch_item_buttonボタン
  2. search_itemという名前の新しいスロット関数を作成しました

アイテム購入

  • 商品購入の機能を実装するための新しい関数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 を追加して、注文レコードを表示する機能を実装します。
# 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)

おすすめ

転載: blog.csdn.net/weixin_45646640/article/details/130111406