Initial commit
This commit is contained in:
191
create_pizzas_table.py
Normal file
191
create_pizzas_table.py
Normal file
@@ -0,0 +1,191 @@
|
||||
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()
|
Reference in New Issue
Block a user