'''
一、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)
sqlite数据库操作
最新推荐文章于 2024-03-31 11:01:32 发布