簡單的模擬京東商城購買過程 pymysql

2021-08-10 05:29:24 字數 3543 閱讀 4249

學習python和資料分析推薦地方: www.lynda.com

獲取lynda官網會員的方式:

from pymysql import connect

class jd(object):

"""建立乙個京東的服務"""

def __init__(self):

"""初始化操作,資料庫,類屬性"""

# 建立乙個sql連線

self.conn = connect(host="localhost", port=3306,

database="jing_dong", user="root",

password="mysql", charset="utf8")

# 建立乙個游標

self.cursor = self.conn.cursor()

self.customer_id = none

def run(self):

while true:

jd.print_menu()

option = input("輸入:")

if option == "1":

self.show_all_goods()

elif option == "2":

self.log_in()

pass # todo 登陸

elif option == "3":

self.register()

pass # todo 註冊

elif option == "4":

self.place_order()

pass # todo 下訂單

elif option == "5":

break

pass # todo 退出系統

def show_all_goods(self):

try:

sql = """select * from goods"""

self.cursor.execute(sql)

for item in self.cursor.fetchall():

print(item)

except exception as e:

print("讀取資料失敗")

def log_in(self):

"""登入操作"""

user_name = input("請輸入使用者名稱:")

password = input("請輸入密碼:")

sql = """select * from user_info where user_name=%s and password=%s"""

if not self.cursor.execute(sql, [user_name, password]):

print("使用者名稱或者密碼錯誤!")

return

user_id = self.cursor.fetchone()[0]

print("登入成功!")

# 儲存本地登入狀態

self.customer_id = user_id

def register(self):

user_name = input("請輸入使用者名稱:")

try:

sql = """select * from user_info where user_name=%s"""

if self.cursor.execute(sql, [user_name]):

print("該使用者名稱已經註冊!")

return

password = input("請輸入密碼:")

sql = """insert into user_info value(0, %s, %s, %s, %s)"""

self.cursor.execute(sql, [user_name, password, address, mobile])

self.conn.commit()

except exception as e:

print("註冊失敗!")

self.conn.rollback()

return

else:

print("註冊成功!")

def place_order(self):

customer_id = int(self.customer_id)

if self.customer_id is none:

print("請先登入賬號!")

return

# 選擇商品,獲取商品id

self.show_all_goods()

goods_id = input("請輸入您要購買的商品編號:")

sql = """select * from goods where id=%s"""

if not self.cursor.execute(sql, [goods_id]):

print("輸入有誤,請重試!")

print("購買失敗!")

return

print("您選擇的商品資訊為:", self.cursor.fetchall())

try:

# 新增下單時間, 商品id到orders_list

sql = """insert into orders_list values(0, now(), %s)"""

self.cursor.execute(sql, [customer_id])

order_id = self.cursor.lastrowid

# 新增order_id, goods_id 和qty到order_detail

sql = """insert into order_detail values(0, %s, %s, 1)"""

self.cursor.execute(sql, [order_id, goods_id])

# 提交sql請求

self.conn.commit()

except exception as e:

print("購買失敗!", e)

self.conn.rollback()

return

finally:

print("購買成功!")

@staticmethod

def print_menu():

menu = """

----歡迎來到 京東**-----

1 顯示所有商品

2 登陸

3 註冊

4 下訂單

5 退出系統

請開始你的選擇-------:

"""print(menu)

def __del__(self):

"""退出程式,關燈"""

self.cursor.close()

self.conn.close()

def main():

# create mall service

jd = jd()

# start service

jd.run()

if __name__ == '__main__':

main()

京東商城之手機購買推薦

這幾年各大廠商發布了多款炫酷手機上市,想想本人的手機已經用了兩年多,也該光榮退役了。作為乙個理性派,發揮我一如既往的聰明智慧型和研究精神,秉著絕不被廠家的花式宣傳所矇騙 絕不被商家的虛假折扣所忽悠的原則,絕對要找到口碑最好 價效比最高的手機。由於準備在京東購買,本人打算以京東 中目前在售 為500元...

京東商城EDM營銷的喜和憂

一 觸發類郵件案例分享 可見,電子郵件已經成為電商最重要的營銷工具之一。最近我們發現,京東 開通了 京東 edm 微博,看來京東對edm也越來越重視了。下面就為大家分享幾封京東的郵件,如有不恰當之處,歡迎各位拍磚!觸發類郵件案例一 邀請客戶評價已購買的產品 郵件主題 京東網上 您還有未評價的商品哦,...

商城商品購買數量增減的完美JS效果

效果如下 以下是html 加入借閱臺 首先看第一條 輸入一定是數字 這很容易想到用keyup事件監測,用正規表示式替換非數字字元 booknum keyup function 這樣就可以保證使用者輸入的一定是數字了,並且我們中間做了校驗,如果使用parseint轉換為整數後值是nan,就讓值為1 但...