Python操作SQLite
SQLite数据库
SQLite:嵌入式数据库,其数据库是一个以.db后缀结尾的文件。
创建数据库
使用python内置模块sqlite3
注意:如果数据库表存在会报错,所以下述代码只能执行一次。
案例
import sqlite3
#数据库文件是当前目录下的mrsoft.db,如果不存在会创建该文件
conn = sqlite3.connect('mrsoft.db')
#创建一个游标对象
cursor = conn.cursor()
#使用游标对象执行sql语句
cursor.execute('create table user (id int(10) primary key, name varchar(20))')
#关闭游标
cursor.close()
#关闭数据库连接
conn.close()
新增数据
使用insert语句。
案例
import sqlite3
conn = sqlite3.connect('mrsoft.db')
cursor = conn.cursor()
sql ='insert into user (id ,name) values(1,"刘亦菲")'
cursor.execute(sql)
cursor.close()
#需要提交事务才能将数据写入数据库
conn.commit()
conn.close()
使用'' or 1=1获取所有数据
所以在sql语句中最好使用?占位符来传入数据,防止sql注入。
上述部分代码可改为
sql = 'insert into user (id ,name) values(?,?)'
cursor.execute(sql,(2,'唐嫣'))
使用cursor.executemany()插入多条数据
修改部分代码如下
data = [(3,'赵薇'),(4,'张天爱'),(5,'娜扎')]
cursor.executemany(sql,data)
查询数据
使用select语句。
fetchone():查一条数据。
fetchmany(size):查size条数据。
fetchall():查所有数据。
注意:如果将这三个方法写在一起,那么假如user表中有三条数据,fetchone()会输出第一条,fetchmany(2)会输出余下的2条,因为三条数据都被查完了,fetchall()就会输出[]空列表。
案例
import sqlite3
conn = sqlite3.connect('mrsoft.db')
cursor = conn.cursor()
cursor.execute('select * from user')
# result = cursor.fetchone()
# print('使用fetchone查询一条数据:',result)
# result2 = cursor.fetchmany(2)
# print('使用fetchmany查询2条数据:',result2)
result3 = cursor.fetchall()
print('使用fetchall查询所有数据:',result3)
cursor.close()
conn.close()
'''
out:
使用fetchone查询一条数据: (1, '刘亦菲')
out:
使用fetchmany查询2条数据: [(1, '刘亦菲'), (2, '景甜')]
out:
使用fetchall查询所有数据: [(1, '刘亦菲'), (2, '景甜'), (3, '文咏珊')]
注意:这里我是挨个执行的查询方法。
'''
使用?作为占位符,元组来替换问号,不要忘记元组只有一个元素时要加上逗号。
案例
import sqlite3
conn = sqlite3.connect('mrsoft.db')
cursor = conn.cursor()
#查询id大于2的数据
cursor.execute('select * from user where id > ?',(1,))
result = cursor.fetchall()
print(result)
cursor.close()
conn.close()
#out: [(2, '景甜'), (3, '文咏珊')]
修改数据
使用update语句。
案例
import sqlite3
conn = sqlite3.connect('mrsoft.db')
cursor = conn.cursor()
#将id等于1的刘亦菲修改为唐嫣
sql = 'update user set name = ? where id = ?'
cursor.execute(sql,('唐嫣',1))
cursor.close()
#需要提交事务才能将数据写入数据库
conn.commit()
conn.close()
删除数据
使用delete语句。
案例
import sqlite3
conn = sqlite3.connect('mrsoft.db')
cursor = conn.cursor()
#删除id等于1的数据
cursor.execute('delete from user where id = ?',(1,))
cursor.close()
#需要提交事务才能将数据写入数据库
conn.commit()
conn.close()
删除全部数据
cursor.execute('delete from user')
学习来自:《python从入门到项目实践》明日科技 第十五章
今天的学习是为了以后的工作更加的轻松!