Python数据库SQLite使用详解
目录
一、前言:
- 我们在上一篇讲解了python中使用数据库时涉及到的一些概念和api的介绍。
- 本次我们将通过几个小的demo来实战演练python操作数据库的一些知识点。
二、SQLite数据库使用详解
- SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。
- Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。
三、源码演示
-
OK,我们下看下示例代码
-
1、我们声明一个User类。
#声明一个User类 class User: id = 0; name = ""; #导入sqlite3模块 import sqlite3 #创建表 def createTable(): #连接anjie.db数据库,不存在会自动创建 conn = sqlite3.connect('anjie.db'); #获取游标 curs = conn.cursor(); #执行创建表语句 curs.execute(''' CREATE TABLE IF NOT EXISTS user_table( id VARCHAR(20) PRIMARY KEY, name VARCHAR(20) ) '''); # 关闭Cursor: curs.close() # 提交事务: conn.commit() # 关闭Connection: conn.close() #插入一条数据 def insertOneData(): conn = sqlite3.connect('anjie.db'); curs = conn.cursor(); u = User(); u.id = -1; u.name = "anjie"; curs.execute('INSERT INTO user_table (id, name) VALUES (?, ?)', [u.id, u.name]); curs.close() # 通过rowcount获得插入的行数: print('插入了%d 条数据' % curs.rowcount) conn.commit() conn.close() # 查询数据 def selectData(): conn = sqlite3.connect('anjie.db'); curs = conn.cursor(); curs.execute('SELECT * FROM user_table'); print(curs.fetchall()) conn.commit() conn.close() if __name__ == '__main__': createTable(); insertOneData(); selectData();
-
运行结果如下:
- 插入了1 条数据
- [(’-1’, ‘anjie’)]
-
OK,我们再编写一个插入多条数据的方法。
def insertManyData(): conn = sqlite3.connect('anjie.db'); curs = conn.cursor(); u = None; for i in range(10): u = User(); u.id = i; u.name = "anjie"+str(i); curs.execute('INSERT INTO user_table (id, name) VALUES (?, ?)', [u.id, u.name]); curs.close() conn.commit() conn.close() - OK,我们修改调用方法 if __name__ == '__main__': # createTable(); # insertOneData() insertManyData(); selectData();
-
结果输出为:
- [(’-1’, ‘anjie’), (‘0’, ‘anjie0’), (‘1’, ‘anjie1’), (‘2’, ‘anjie2’), (‘3’, ‘anjie3’), (‘4’, ‘anjie4’), (‘5’, ‘anjie5’), (‘6’, ‘anjie6’), (‘7’, ‘anjie7’), (‘8’, ‘anjie8’), (‘9’, ‘anjie9’)]
-
其插入了10条数据,从0到9。
-
OK,通过这些数据我们再单独看三个方法fetchone、fetchmany、fetchall
if __name__ == '__main__': # createTable(); # insertOneData() # insertManyData(); # selectData(); conn = sqlite3.connect('anjie.db'); curs = conn.cursor(); curs.execute('SELECT * FROM user_table'); print(curs.fetchone()) print(curs.fetchmany()) print(curs.fetchmany(size=2)) curs.arraysize=1 print(curs.fetchmany()) print(curs.fetchall()) conn.commit() conn.close()
-
输出结果为:
- (’-1’, ‘anjie’) [(‘0’, ‘anjie0’)] [(‘1’, ‘anjie1’), (‘2’, ‘anjie2’)] [(‘3’, ‘anjie3’)] [(‘4’, ‘anjie4’), (‘5’, ‘anjie5’), (‘6’, ‘anjie6’), (‘7’, ‘anjie7’), (‘8’, ‘anjie8’), (‘9’, ‘anjie9’)]
-
从结果我们可以看到
-
fetchone获取第一条数据,
-
fetchmany获取多条,通过size指定,不指定默认为1,也可以通过arraysize指定
-
fetchall获取剩余所有的数据。
-
要注意一点:curs里面的数据及为查询到的数据,取出一条,里面就会少一条,所以如果你第一个就调用fetchall,那么后面取的都是[]空集合了。
四、总结
- OK,通过前面的学习,相信大家已经基本掌握了python 操作SQLite的基本步骤,其他数据库也基本类型,剩下就更多是对SQL语句的学习了。