Python连接SQLite数据库

 

SQLite数据库更多内容: http://blog.itpub.net/26736162/viewspace-2141867/

 

SQLite 是一种嵌入式数据库,它的数据库就是一个文件。由于 SQLite 本身是 C 写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在 iOS 和 Android 的 App 中都可以集成。 Python 就内置了 SQLite3 ,所以,在 Python 中使用 SQLite ,不需要安装任何东西,直接使用。

Python 定义了一套操作数据库的 API 接口,任何数据库要连接到 Python ,只需要提供符合 Python 标准的数据库驱动即可。由于 SQLite 的驱动内置在 Python 标准库中,因此可以直接来操作 SQLite 数据库。

在 Python 中操作数据库时,要先导入数据库对应的驱动,然后通过 Connection 对象和 Cursor 对象操作数据。在数据库操作完毕之后,要确保打开的 Connection 对象和 Cursor 对象都正确地被关闭,否则,资源就会泄露。

 

Python 连接到 SQLite 数据库示例:

# 导入SQLite驱动
import sqlite3,os
# 连接到SQLite数据库
# 数据库文件是lhrtest.db
# 如果文件不存在,那么会自动在当前目录创建一个数据库文件:
conn = sqlite3.connect('lhrtest.db')
 
# db_file = os.path.join(os.path.dirname(__file__), 'lhrtest.db')
# if os.path.isfile(db_file):
#     os.remove(db_file)
# conn = sqlite3.connect(db_file)
 
# 创建一个Cursor:
cursor = conn.cursor()
# 执行一条SQL语句,创建user表:
cursor.execute('create table user(id varchar(20) primary key, name varchar(20))')
# 继续执行一条SQL语句,插入一条记录:
cursor.execute('insert into user (id, name) values (\'1\', \'xiaomaimiao\')')
# 通过rowcount获得插入的行数:
print(cursor.rowcount)
# 执行查询语句:
cursor.execute('select * from user where id=?', ('1',))
# 获得查询结果集:
values = cursor.fetchall()
print(values)
# 关闭Cursor:
cursor.close()
# 提交事务:
conn.commit()
# 关闭Connection:
conn.close()

 

运行结果:

1
[('1', 'xiaomaimiao')]

在程序运行完毕后,会在程序的当前目录下生成一个 lhrtest.db 文件,如下所示:

  Python连接SQLite数据库_数据

可以使用 SQLLite 的客户端查看数据库文件的内容:

  Python连接SQLite数据库_sqlite_02

使用 Python 的 DB API 时,只要搞清楚 Connection 和 Cursor 对象,打开后一定记得关闭,就可以放心地使用。

使用 Cursor 对象执行 insert , update , delete 语句时,执行结果由 rowcount 返回影响的行数,就可以拿到执行结果。

使用 Cursor 对象执行 select 语句时,通过 featchall() 可以拿到结果集。结果集是一个 list ,每个元素都是一个 tuple ,对应一行记录。

如果 SQL 语句带有参数,那么需要把参数按照位置传递给 execute() 方法,有几个 ? 占位符就必须对应几个参数,例如:

cursor.execute('select*from user where name=?and pwd=?',('abc','password'))