实现python连接sqlserver较为简单,操作起来也并没有java那样麻烦,本次将通过一个商品管理and初级购物系统来带大家体会一下:
关注+点赞+收藏 谢谢 ^ ^
实验功能:
1 、管理员可以管理操纵所有数据;
(1) 可对表中数据根据用户号进行查询,并可增加、删除、更改用户记录。当更改用户表中用户号时可以实现其他相关表中用户号的级联更新,删除用户表中用户记录时可以实现相关表中记录级联删除。
(2)对商品表中数据,可依根据商品号进行查询,并可增加、删除、更改商品记录。
(3)其他表要具有查询,并可增加、删除、
2、u1只能查看更新商品信息,和查看更新某一类商品订单记录;
3、自己只能查看自己所有个人信息和订单信息。
有三个用户,管理员(超级用户),u1,和自己(普通用户),以下为管理员的功能:
数据库的设计如下:
数据库中还有许多视图需要自己建立的视图、级联、权限等需要读者自己查看python代码自行设计!
总的实验代码如下:
# coding=utf8
import pymssql
def login_page():
print("====================")
flag = input("请输入你的身份:"
"1. 管理员 "
"2. u1 "
"3. 自己本人 "
"4. 退出 ")
print("====================")
return flag
def login_page_user(server,database):
user = input("请输入你的用户名:")
password = input("请输入你的密码:")
connect = pymssql.connect(server, user, password, database,charset="cp936") # 设置charset="cp936" 或者"GBK" 防止乱码
print("--------------------")
return connect
def databaseManage_u1(connect):
while True:
print("*** ***\n"
"======u1 用户======")
cursor = connect.cursor()
print("*** 菜单 ***")
flag = input("11. -- -- -- -- 显示商品信息 -- -- -- -- \n"
"12. -- -- -- -- 显示部分订单信息 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"1. -- -- -- -- 修改商品操作 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"2. -- -- -- -- 添加订单信息 -- -- -- -- \n"
"3. -- -- -- -- 删除订单信息 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"4. -- -- -- -- -> 退出程序 \n"
" ******说明:请正确选择... --> ")
if (int(flag) == 11):
print("======商品信息如下:======")
sql_mm = "select * from mmarket"
cursor.execute(sql_mm)
row = cursor.fetchone()
while row:
print(" 商品号:%s 商品名:%s " % (row[0], row[1]))
row = cursor.fetchone()
elif (int(flag) == 12):
print("*** ***\n"
"======部分订单信息如下:======")
sql_ur = "select * from mmarket_u1"
cursor.execute(sql_ur)
row = cursor.fetchone()
while row:
print("用户名:%s 商品号:%s 订单号:%s " % (row[0], row[1], row[0] + row[0]))
row = cursor.fetchone()
elif (int(flag) == 1): # 修改商品操作
MNO = input("请输入你要修改的商品号:")
MNAME_new = input("你想把商品名修改为什么呢?")
sql_mm_modify = "update mmarket set MNAME = '" + MNAME_new + "' where MNO = '" + MNO + "'"
cursor.execute(sql_mm_modify)
connect.commit()
print("修改商品信息成功...")
elif (int(flag) == 2): # 添加订单信息
NNO = input("输入新用户的用户名:")
MNO = input("请入新的商品的商品号:")
sql_um_add = "insert into mmarket_u1(NNO,MNO) values('" + NNO + "','" + MNO + "')"
sql_um_add_new = "insert into mmarket_u1(NNO,MNO) values('%s','%s')" %(NNO,MNO)
cursor.execute(sql_um_add)
connect.commit()
print("添加订单信息成功...")
elif (int(flag) == 3): # 删除订单信息
MNO = input("输入你想要删除订单的商品号;")
sql_um_delete = "delete from mmarket_u1 where MNO = '" + MNO + "'"
cursor.execute(sql_um_delete)
connect.commit()
print("删除订单信息成功...")
elif (int(flag) == 4):
break
else:
continue
def databaseManage_1908524034(connect):
# 自己只能查看自己的个人信息和订单信息
while True:
print("*** ***\n"
"======自己:1908524034======")
print("*** 个人信息如下 ***")
cursor = connect.cursor()
sql_uu = "select * from uuser_1908524034"
cursor.execute(sql_uu)
row = cursor.fetchone()
print("用户名:%s 姓名:%s 性别:%s " % (row[0], row[1], row[2]))
print("*** ***\n"
"======订单信息如下:======")
sql_um = "select * from uure_1908524034"
cursor.execute(sql_um)
row2 = cursor.fetchone()
while row2:
print("姓名:%s 购买的商品号:%s 订单号:%s " % (row[0],row2[1],row2[0]+row2[1]))
row2 = cursor.fetchone()
print("*** 菜单 ***")
flag = input("1. -- -- -- -- 添加订单信息 -- -- -- -- \n"
"2. -- -- -- -- 删除订单信息 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"3. -- -- -- -- -> 退出程序 \n"
" ******说明:请正确选择... --> ")
if (int(flag) == 1):
MNO = input("请入新的商品的商品号:")
sql_um_add = "insert into uure_1908524034(NNO,MNO) values('" + "1908524034" + "','" + MNO + "')"
cursor.execute(sql_um_add)
connect.commit()
print("添加订单信息成功...")
elif (int(flag) == 2): # 删除订单信息
MNO = input("输入你想要删除订单的商品号;")
sql_um_delete = "delete from uure_1908524034 where MNO = '" + MNO + "'"
cursor.execute(sql_um_delete)
connect.commit()
print("删除订单信息成功...")
elif (int(flag) == 3):
break
else:
continue
def databaseManage_sa(connect):
# sa超级用户,拥有所有权限
while True:
print("========ALL========")
cursor = connect.cursor()
#对用户进行修改和删除操作
print("*** 菜单 ***")
flag = input("11. -- -- -- -- 显示所有用户 -- -- -- -- \n"
"12. -- -- -- -- 显示所有商品 -- -- -- -- \n"
"13. -- -- -- -- 显示所有订单信息 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"1. -- -- -- -- 删除用户操作 -- -- -- -- \n"
"2. -- -- -- -- 修改用户操作 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"3. -- -- -- -- 添加商品操作 -- -- -- -- \n"
"4. -- -- -- -- 删除商品操作 -- -- -- -- \n"
"5. -- -- -- -- 修改商品操作 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"6. -- -- -- -- 添加订单信息 -- -- -- -- \n"
"7. -- -- -- -- 删除订单信息 -- -- -- -- \n"
" -- -- -- -- -- *** *** -- -- -- -- \n"
"8. -- -- -- -- -> 退出程序 \n"
" ******说明:请正确选择... --> ")
if (int(flag) == 11):
print("*** ***\n"
"======所有用户======")
sql_uu = "select * from uuser"
cursor.execute(sql_uu)
row = cursor.fetchone()
while row:
print("用户名:%s 姓名:%s 性别:%s " % (row[0], row[1], row[2]))
row = cursor.fetchone()
elif (int(flag) == 12):
print("*** ***\n"
"======所有商品======")
sql_mm = "select * from mmarket"
cursor.execute(sql_mm)
row = cursor.fetchone()
while row:
print(" 商品号:%s 商品名:%s " % (row[0], row[1]))
row = cursor.fetchone()
elif (int(flag) == 13):
print("*** ***\n"
"======订单信息======")
sql_ur = "select * from ureservation"
cursor.execute(sql_ur)
row = cursor.fetchone()
while row:
print("用户名:%s 商品号:%s 订单号:%s " % (row[0], row[1], row[0] + row[1])) # 订单号是由用户名和商品号拼接而成
row = cursor.fetchone()
elif (int(flag) == 1): # 删除用户操作
NNO = input("填写你想要删除的用户名: ")
sql_uu_delete = "delete from uuser where NNO = '" + NNO + "'"
cursor.execute(sql_uu_delete)
connect.commit() # 出现错误时回滚
print("删除用户成功...")
elif (int(flag) == 2): # 修改用户操作
NNO = input("填写你想要修改的用户名: ")
NAME_new = input("你想把名字修改成什么呢? ")
NSEX_new = input("你想把性别修改成什么呢? ")
sql_uu_modify = "update uuser set NAME = '" + NAME_new + "',NSEX = '" + NSEX_new + "' where NNO = '" + NNO +"'"
cursor.execute(sql_uu_modify)
connect.commit()
print("修改用户成功...")
elif (int(flag) == 3): # 添加商品操作 商品号自动生成
MNO = input("请输入十二位数的商品号:")
MNAME = input("请输入商品名:")
sql_mm_add = "insert into mmarket(MNO,MNAME) values('" + MNO + "','" + MNAME + "')"
cursor.execute(sql_mm_add)
connect.commit()
print("添加商品成功...")
elif (int(flag) == 4): # 删除商品操作
MNAME = input("请输入你要删除的商品名:")
sql_mm_delete = "delete from mmarket where MNAME = '" + MNAME + "'"
cursor.execute(sql_mm_delete)
connect.commit()
print("删除商品成功...")
elif (int(flag) == 5): # 修改商品操作
MNO = input("请输入你要修改的商品号:")
MNAME_new = input("你想把商品名修改为什么呢?")
sql_mm_modify = "update mmarket set MNAME = '" + MNAME_new + "' where MNO = '" + MNO + "'"
cursor.execute(sql_mm_modify)
connect.commit()
print("修改商品信息成功...")
elif (int(flag) == 6): # 添加订单信息
NNO = input("输入新用户的用户名:")
MNO = input("请入新的商品的商品号:")
sql_um_add = "insert into ureservation(NNO,MNO) values('" + NNO + "','" + MNO + "')"
cursor.execute(sql_um_add)
connect.commit()
print("添加订单信息成功...")
elif (int(flag) == 7): # 删除订单信息
MNO = input("输入你想要删除订单的商品号;")
sql_um_delete = "delete from ureservation where MNO = '" + MNO + "'"
cursor.execute(sql_um_delete)
connect.commit()
print("删除订单信息成功...")
elif (int(flag) == 8): # 结束!
break
else:
continue
if __name__ == '__main__':
try:
while True:
server = "127.0.0.1"
database = "demo01"
connect = ""
flag = login_page()
while ((int(flag) != 1) & (int(flag) != 2) & ((int(flag) != 3)) & ((int(flag) != 4))):
print("输入身份有误,请重新输入...")
flag = login_page()
# sa 用户连接
if (int(flag) == 1):
connect = login_page_user(server,database)
databaseManage_sa(connect)
# u1 用户连接
elif (int(flag) == 2):
connect = login_page_user(server,database)
databaseManage_u1(connect)
# 自己连接并进行相关操作
elif (int(flag) == 3):
connect = login_page_user(server,database) # 用户名和密码均为 1908524034
databaseManage_1908524034(connect)
elif (int(flag) == 4):
# 关闭数据库连接
connect.close()
exit(0)
except:
print("......完毕!")