学习python和数据分析推荐地方: www.lynda.com
获取lynda官网会员的方式:http://item.taobao.com/item.htm?id=557746408785
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("请输入密码:")
address = input("请输入地址:")
mobile = 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()