Python深入学习之数据库操作(sqlite3)

一、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操作,否则数据库内的信息是不能改变的。这个需要多练习,总之属于勤能生巧的过程。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值