Python连接SQL server数据库,创建买卖商品购物系统,并完成创建用户名,设置权限和功能测试等操作

设计实现管理数据库应用程序,要求应具有如下基本功能:

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"
""")
#把订单表的增加授权给个人,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有点饱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值