191 lines
5.1 KiB
Python
191 lines
5.1 KiB
Python
import mysql.connector
|
|
import random
|
|
from datetime import datetime
|
|
|
|
# 資料庫連線資訊
|
|
DB_CONFIG = {
|
|
'host': 'mysql.theaken.com',
|
|
'port': 33306,
|
|
'user': 'A019',
|
|
'password': '9wvKEkxBzVca',
|
|
'database': 'db_A019'
|
|
}
|
|
|
|
# 建立資料庫連線
|
|
def get_db_connection():
|
|
try:
|
|
conn = mysql.connector.connect(**DB_CONFIG)
|
|
return conn
|
|
except mysql.connector.Error as err:
|
|
print(f"資料庫連線錯誤: {err}")
|
|
return None
|
|
|
|
# 建立 pizzas 資料表
|
|
def create_pizzas_table():
|
|
conn = get_db_connection()
|
|
if not conn:
|
|
print("無法連接到資料庫")
|
|
return False
|
|
|
|
cursor = conn.cursor()
|
|
|
|
# 建立 pizzas 資料表
|
|
create_table_query = """
|
|
CREATE TABLE IF NOT EXISTS pizzas (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(50) NOT NULL,
|
|
price DECIMAL(10, 2) NOT NULL,
|
|
size VARCHAR(2) NOT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
updated_at DATETIME NOT NULL
|
|
)
|
|
"""
|
|
|
|
try:
|
|
cursor.execute(create_table_query)
|
|
conn.commit()
|
|
print("成功建立 pizzas 資料表")
|
|
return True
|
|
except mysql.connector.Error as err:
|
|
print(f"建立資料表錯誤: {err}")
|
|
return False
|
|
finally:
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
# 產生隨機 pizza 資料
|
|
def generate_random_pizzas(count=6):
|
|
# Pizza 名稱列表
|
|
pizza_names = [
|
|
"夏威夷披薩", "瑪格麗特披薩", "蘑菇披薩", "臘腸披薩",
|
|
"海鮮披薩", "素食披薩", "四季披薩", "墨西哥辣味披薩",
|
|
"起司披薩", "燒烤雞肉披薩", "牛肉披薩", "蔬菜披薩"
|
|
]
|
|
|
|
# 確保名稱不重複,如果 count 大於名稱列表長度,則使用所有可用名稱
|
|
if count > len(pizza_names):
|
|
count = len(pizza_names)
|
|
|
|
# 隨機選擇不重複的名稱
|
|
selected_names = random.sample(pizza_names, count)
|
|
|
|
# Pizza 尺寸
|
|
pizza_sizes = ["S", "M", "L"]
|
|
|
|
# 隨機生成 pizza 資料
|
|
pizzas = []
|
|
for name in selected_names:
|
|
size = random.choice(pizza_sizes)
|
|
|
|
# 根據尺寸設定價格範圍
|
|
if size == "S":
|
|
price = round(random.uniform(200, 300), 2)
|
|
elif size == "M":
|
|
price = round(random.uniform(300, 400), 2)
|
|
else: # L
|
|
price = round(random.uniform(400, 500), 2)
|
|
|
|
# 設定時間
|
|
now = datetime.now()
|
|
created_at = now
|
|
updated_at = now
|
|
|
|
pizzas.append((name, price, size, created_at, updated_at))
|
|
|
|
return pizzas
|
|
|
|
# 插入隨機 pizza 資料
|
|
def insert_random_pizzas(count=6):
|
|
conn = get_db_connection()
|
|
if not conn:
|
|
print("無法連接到資料庫")
|
|
return False
|
|
|
|
cursor = conn.cursor()
|
|
|
|
# 生成隨機 pizza 資料
|
|
pizzas = generate_random_pizzas(count)
|
|
|
|
# 插入資料
|
|
insert_query = """
|
|
INSERT INTO pizzas (name, price, size, created_at, updated_at)
|
|
VALUES (%s, %s, %s, %s, %s)
|
|
"""
|
|
|
|
try:
|
|
cursor.executemany(insert_query, pizzas)
|
|
conn.commit()
|
|
print(f"成功插入 {cursor.rowcount} 筆 pizza 資料")
|
|
return True
|
|
except mysql.connector.Error as err:
|
|
print(f"插入資料錯誤: {err}")
|
|
return False
|
|
finally:
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
# 顯示所有 pizza 資料
|
|
def show_all_pizzas():
|
|
conn = get_db_connection()
|
|
if not conn:
|
|
print("無法連接到資料庫")
|
|
return
|
|
|
|
cursor = conn.cursor(dictionary=True)
|
|
|
|
try:
|
|
cursor.execute("SELECT * FROM pizzas")
|
|
pizzas = cursor.fetchall()
|
|
|
|
if not pizzas:
|
|
print("沒有找到任何 pizza 資料")
|
|
return
|
|
|
|
print("\n所有 Pizza 資料:")
|
|
print("-" * 80)
|
|
print(f"{'ID':<5} {'名稱':<20} {'價格':<10} {'尺寸':<5} {'建立時間':<20} {'更新時間':<20}")
|
|
print("-" * 80)
|
|
|
|
for pizza in pizzas:
|
|
print(f"{pizza['id']:<5} {pizza['name']:<20} {pizza['price']:<10} {pizza['size']:<5} {pizza['created_at']} {pizza['updated_at']}")
|
|
|
|
except mysql.connector.Error as err:
|
|
print(f"查詢資料錯誤: {err}")
|
|
finally:
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
# 清空 pizzas 資料表
|
|
def truncate_pizzas_table():
|
|
conn = get_db_connection()
|
|
if not conn:
|
|
print("無法連接到資料庫")
|
|
return False
|
|
|
|
cursor = conn.cursor()
|
|
|
|
try:
|
|
cursor.execute("TRUNCATE TABLE pizzas")
|
|
conn.commit()
|
|
print("成功清空 pizzas 資料表")
|
|
return True
|
|
except mysql.connector.Error as err:
|
|
print(f"清空資料表錯誤: {err}")
|
|
return False
|
|
finally:
|
|
cursor.close()
|
|
conn.close()
|
|
|
|
# 主程式
|
|
def main():
|
|
# 建立資料表
|
|
if create_pizzas_table():
|
|
# 清空資料表
|
|
if truncate_pizzas_table():
|
|
# 插入隨機資料
|
|
if insert_random_pizzas(6):
|
|
# 顯示所有資料
|
|
show_all_pizzas()
|
|
|
|
if __name__ == "__main__":
|
|
main() |