设计实现管理数据库应用程序,要求应具有如下基本功能:
1 使用Python编写应用程序
2 设置至少3个用户:分别为管理员sa,U1(卖家),和自己(买家).(以自己的学号作为登陆名和用户名)
3 管理员可以管理操纵所有数据。
(1) 可对表中数据根据用户号进行查询,并可增加、删除、更改用户记录。当更改用户表中用户号时可以实现其他相关表中用户号的级联更新,删除用户表中用户记录时可以实现相关表中记录级联删除。
(2)对商品表中数据,可依根据商品号进行查询,并可增加、删除、更改商品记录。
(3)其他表要具有查询,并可增加、删除、
4 u1只能查看更新商品信息,和查看更新某一类商品订单记录。
5 自己只能查看自己所有个人信息和订单信息。
以上是要求;
以下是代码段,这是Python连接数据库并创建用户,创建表,填表,设置用户权限。
import pymssql #引入pymssql模块
conn= pymssql.connect('(local)', 'sa', '12345', 'deal11') #服务器名,账户,密码,数据库名
cursor=conn.cursor()
if cursor:
print("连接成功!")
# 设置登录名和数据库用户sa
cursor.execute("create user sa for login u11")
# 设置登录名和数据库用户u1
cursor.execute("create user u1 for login u1")
# 设置登录名和数据库用户l1908524093
cursor.execute("create user l1908524093 for login l1908524093")
def CreateTable():
#创建用户表-yonghu
sql1="""
create table yonghu(
User_id VARCHAR(50) primary key,
User_name VARCHAR(50) NOT NULL,
User_tel bigint NOT NULL,
User_add VARCHAR(50) NOT NULL)"""
cursor.execute(sql1)
#创建商品表-shangpin
sql2="""
IF OBJECT_ID('shangin','U') IS NOT NULL
DROP TABLE shangpin
create table shangpin(
Sp_id VARCHAR(50) primary key,
Sp_name VARCHAR(50) NOT NULL,
Sp_price int NOT NULL,
Sp_kind VARCHAR(50) NOT NULL)"""
cursor.execute(sql2)
#创建订单表-dingdan
sql3="""
IF OBJECT_ID('dingdan','U') IS NOT NULL
DROP TABLE dingdan
create table dingdan(
Dd_id VARCHAR(50) primary key,
Sp_id VARCHAR(50) NOT NULL,
User_id VARCHAR(50) NOT NULL,
Dd_price int NOT NULL,
foreign key(User_id) references yonghu(User_id))"""
cursor.execute(sql3)
conn.commit()
CreateTable()
def InsertData():
#向用户表插入数据
sql1="insert into yonghu(User_id,User_name,User_tel,User_add) values(%s,%s,%d,%s)"
data1=[('l1908524093','lideyu','1318309','Xinxiang'),
('001','Mark','13512341234','Zhengzhou'),
('002','Kangkang','13503714321','Beijing')]
cursor.executemany(sql1,data1)
#向商品表插入数据
sql2="insert into shangpin(Sp_id,Sp_name,Sp_price,Sp_kind) values(%s,%s,%d,%s)"
data2=[('s001','toothbrush','10','baihuo'),
('s002','pen','15','wenju'),
('s003','eraser','2','wenju'),
('s004','biscuits','6','snacks'),
('s005','chips','5','snacks')]
cursor.executemany(sql2,data2)
#向订单表插入数据
sql3="insert into dingdan(Dd_id,Sp_id,User_id,Dd_price) values(%s,%s,%s,%d)"
data3=[('202106012001','s001','001','20'),
('202012132002','s002','l1908524093','45'),
('202106122003','s003','l1908524093','60')]
cursor.executemany(sql3,data3)
conn.commit()
InsertData()
#对用户表和订单表设置用户号级联更新和删除
cursor.execute("""alter table dingdan add constraint FK_dingdan_yonghu
foreign key(User_id) references yonghu(User_id)
on update cascade on delete cascade""")
conn.commit()
#把商品表的查询、增加、删除和更改授权给sa(建立表时已设置商品号为主键)
cursor.execute("""
grant select,delete,insert,update
on shangpin
to "sa"
""")
#把订单表的查询、增加、删除和更改授权给sa(建立表时已设置订单号为主键)
cursor.execute("""
grant select,delete,insert,update
on dingdan
to "sa"
""")
#把用户表的查询增加删除授权给sa(建立表时已设置用户号为主键)
cursor.execute("""
grant select,delete,insert
on yonghu
to "sa"
""")
#把商品表的查询,更新,增加,删除授权给u1
cursor.execute("""
grant update,select,delete,insert
on shangpin
to "u1"
""")
#建立文具类商品订单视图,把查看,更新权限授权u1
cursor.execute("""
create view dingdan_wj
as
select *
from dingdan
where Sp_id in (select Sp_id
from shangpin
where Sp_kind='wenju')
""")
cursor.execute("""
grant update,select
on dingdan_wj
to "u1"
""")
#把商品表的查询授权给个人
cursor.execute("""
grant select
on shangpin
to "l1908524093"
""")
#把订单表的增加授权给个人,