sqlite数据库操作

'''
一、DB-API2.0
在不同类型的数据源之间转换
数据库连接:connect(),commit(),rollback(),close()
数据库操作:cur=connect().curor():记录指针;cur.execute(sql[,(参数化列表)]),fetchone(),fetchmany(-1)=fetchall()
'''
import sqlite3  #导入模块
#(1)创建数据库连接:
conn=sqlite3.connect("db2.sqlites")
print(type(conn))
conn.close()
#(2)创建数据库连接:with
with sqlite3.connect("db2.sqlites") as conn:
     cur=conn.cursor()
     '''
     (3)创建表
    sql="create table student(no integer primary key autoincrement,name varchar(10),age int)"
    cur.execute(sql)'''
     '''(4)表中数据插入
     sql="insert into student values(NULL,'王丽',13)"
     cur.execute(sql)
     sql="insert into student values(NULL,'李丽',14),(NULL,'王海',14),(NULL,'李刚',14)"
     cur.execute(sql)'''
     '''(5)表中数据查询
     sql="select * from student"
     cur.execute(sql)
     data1=cur.fetchone()
     print(data1)
     cur.execute(sql)
     data2=cur.fetchmany(-1)
     print(data2)
     cur.execute(sql)
     data3=cur.fetchall()
     print(data3)'''
     '''(6)表中数据删除
     sql="delete from student where no=1"
     cur.execute(sql)
     sql = "select * from student"
     cur.execute(sql)
     data=cur.fetchall()
     print(data)'''
     '''(7)表中数据修改
     sql="update student set age=15 where no=2"
     cur.execute(sql)
     sql = "select * from student"
     cur.execute(sql)
     data=cur.fetchall()
     print(data)'''
     '''(8)sql injection:用一个永真表达式来注入SQL,从而实现伪信息
     sql="create table login(name varchar(10) primary key,password varchar(10))"
     cur.execute(sql)
     sql="insert into login values('admin','1234'),('user1','123456'),('user2','12345')"
     cur.execute(sql)
     sql="select * from login"
     cur.execute(sql)
     data =cur.fetchall()
     print(data)
     参数化SQL语句,防止永真表达式注入
     name=input("name:")
     password=input("password:")
     #sql="select * from login where name='{}' and password={}".format(name,password) #'' or 1=1:登录我的操作界面
     #sql="select * from login where name=? and password=?"  #通用占位符 :?
     sql="select * from login where name=:n and password=:p" #具名占位符
     #cur.execute(sql,(name,password))#带参数的执行:传入元组(admin,)
     cur.execute(sql,{"n":name,"p":password})  #带参数的执行:传入字典
     data=cur.fetchone()
     print(data)
     if data!=None:
         print("login")
     else:
         print("fail")'''
     '''(8)批量插入'''
     lst1=[('user3','12'),('user4','12'),('user5','12')]
     lst2 = [('user6', '12'), ('user7', '12'), ('user8', '12')]
     sql="insert into login values(?,?)"
     cur.executemany(sql,lst1) #传入列表,每个元素时元组,元组中的元素,与表中字段顺序一一对应
     for item in lst2:
         cur.execute(sql,item)  #传入元组中的元素,与表中字段顺序一一对应
     sql="select * from login"
     cur.execute(sql)
     data=cur.fetchall()
     print(data)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小兔子要健康

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

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

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

打赏作者

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

抵扣说明:

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

余额充值