一、SQLITE3是什么?
SQLITE3是Python自带的一个轻量级的数据库,如果我们需要管理的数据量不是很大,同时为了简化不同数据库之间的交互操作,个人建议可以使用这个轻量级的数据库,进行基本的数据添加、修改、删除、查询等操作。因为它不需另行安装,目前python3版本已经集成了相关软件内容。
二、具体数据库操作
(一)创建数据库
首先通过import sqlite3 引入数据库包功能。此包含有connect方法,当系统中没有指定的数据库名时,会自动创建一个需要的数据库名。
示例:
import sqlite3
conn = sqlite3.connect('数据库名')
print("Opened database successfully!")
c = conn.cursor()
c.execute('''CREATE TABLE VULNDB
(Plugin_ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
Risk TEXT NOT NULL,
Description CHAR(1000),
Solution CHAR(1000));''')
print("Table created successfully!")
conn.commit()
conn.close()
这里,conn.cursor()是为了创建一个指针。c.execute()是用于执行SQL指令。
当以上代码执行完毕后,必须执行commit指令,进行代码提交,否则代码没法正常执行,最后记得使用close()关闭数据库。
当然,这里也自动创建了一个VULNDB的数据表,创建表只能执行一次,否则就报错了。
(二)添加数据记录
添加记录和创建数据库操作本身没有什么差别,只需要我们熟悉SQL数据库代码,放到exceute中即可。
由于添加的数据记录一般是好多个字段,因此exceute可以识别做一个大的列表,每一条记录通过元组的形式进行添加操作。
示例:
import sqlite3
conn = sqlite3.connect('test0127')
conn.text_factory = str
c = conn.cursor()
users = [(10, 'usernae', 'high', 'oicq', '163@example.com'),\
(1, 'usename', 'low', 'tesqq', '466@example.com'),\
]
ins = "INSERT INTO VULNDB(Plugin_ID,NAME,Risk,Description,Solution) VALUES (?,?,?,?,?)"
c.execute(ins, users[1])
conn.commit()
print("Records created successfully")
c.close()
conn.close()
(三)查询数据记录
直接SQL语句进行了,这里不做赘述
示例:
import sqlite3
conn = sqlite3.connect('test0127')
conn.text_factory=str
c = conn.cursor()
cursor = c.execute("SELECT * from VULNDB")
for row in cursor:
print(row)
conn.commit()
conn.close()
(四)删除数据记录
这里重点说说execute的几种操作方式。我们可以视情况自行决定使用那种:
1、直接输入,简单但扩展性不够
c.execute(‘DELETE from VULNDB where Plugin_ID=1’)
2、带参数模式,这里delmsg是一个元组
delmsg=(‘1’,‘2’,‘low’)
ins=“DELETE from VULNDB where Plugin_ID=?”
c.execute(ins,delmsg[1]) #删除记录2
3、带参数模式的另一种方案
ins2=“DELETE from VULNDB where Risk=’{0}’”.format(delmsg[2])
这里需要注意,必须通过’进行字符转义,否则组合出来的SQL代码不能查询字符的记录
4、第二种带参数模式,如果需要查询的字段是字符的另一种形式
ins3 = “DELETE from VULNDB where Risk=?”
c.execute(ins3,(‘low’,))#元组模式这里要关注,如果只写成(‘low’)是不行的,系统不能识别为元组
示例:
import sqlite3
conn = sqlite3.connect('test0127')
c = conn.cursor()
#c.execute('DELETE from VULNDB where Plugin_ID=1')#删除记录1
delmsg=('1','2','low')
print(delmsg)
# ins="DELETE from VULNDB where Plugin_ID=?"
# c.execute(ins,delmsg[1]) #删除记录2
# ins1 = "DELETE from VULNDB where Risk='low'"
# ins2="DELETE from VULNDB where Risk=\'{0}\'".format(delmsg[2])
# print(ins2)
# c.execute(ins2)
ins3 = "DELETE from VULNDB where Risk=?"
c.execute(ins3,('low',))#元组
conn.commit()
conn.close()
(五)更新数据记录
与删除记录形式一样,只举一个代码即可。
示例:
c.execute('UPDATE VULNDB SET NAME=? WHERE Risk=? ', ('dog','high'))
三、其他说明
数据库操作重点还是要关注SQL代码参数的使用,还有就是打开数据库后,一定要有commit 和close操作,否则数据库内的信息是不能改变的。这个需要多练习,总之属于勤能生巧的过程。