《Python》《SQLite》Python连接SQLite数据库,读表

2023-04-25 21:47:20

    配置Python环境的方法在我的博客中已经详细介绍。

一、SQLite和PySQLite

    在最近的Python版本中(从2.5开始),SQLite的优势在于它的一个包装(PySQLite)已经被包括在标准库内。SQLite在Python中的模块名称为“sqlite3”,我们可以在Python环境下通话命令import sqlite3验证Pyhton标准库中是否含有此模块。
这里写图片描述
    如上图所示输入命令后无任何错误提示,便可以直接调用。
    如果出现大量错误信息,可能是安装脚本找不到所需文件。确保你知道库文件和include文件安装路径,将它们显示地提供给安装脚本。假设我在/home/mlh/sqlite/current目录中原地编译SQLite,那么头文件应该可以在/home/mlh/sqlite/current/src和/home/mlh/sqlite/current/build/lib中找到。为了让安装程序能使用这些路径,需要编辑安装脚本setup.py。在这个文件中可以设定变量include_dirs和library_dirs:

include_dirs = ['/home/mlh/sqlite/current/src']
library_dirs = ['/home/mlh/sqlite/current/build/lib']

在重新绑定变量之后,刚才说过的安装过程应该可以正常进行了。

二、Python与SQLite建立连接

    将SQLite作为一个模块导入,模块名称为sqlite3(如果使用的是标准库)。之后可以创建一个到数据库文件的连接——如果文件不存在就会自动生成——通过提供一个文件名(可以是文件的绝对路径或相对路径):

import sqlite3
conn = sqlite3.connect('F:/test/data.db')

    之后就能获得连接的游标:

curs = conn.cursor()

    这个游标可以用来执行SQL查询。完成查询并且做出某些更改后确保已经进行了提交,这样才可以将这些修改真正的保存到文件中:

conn.commit()

    可以在每次修改数据后都进行提交,准备关闭数据库时,使用close方法:

conn.close()

三、读出SQLite数据库中的表“demo”的信息

1、在SQLite数据库中创建一张表“demo”,使用SQL语句创建。

程序代码:

/*创建表名为"demo"的表结构*/
create table demo(id integer not null primary key, names text not null, sex text not null, age integer not null);
/*在表中添加数据*/
insert into demo(names,sex,age) values('张三','男',23),('李四','女',18),('王五','男',20),('赵六','男',25);

这里写图片描述

2、先建立起与“data.db”数据库的连接,再进行SQL语句查询。

程序代码:

# -*- coding: UTF-8 -*-

import sqlite3  #输入sqlite3模块
import json  #输入json模块
import re   #输入re模块

conn = sqlite3.connect('F:/test/data.db')  #连接数据库“data”
curs = conn.cursor() #返回连接的游标对象

query = 'SELECT * FROM demo'  #SQL语句查询表“demo”
information = curs.execute(query)
print ' ','name','sex','age'
for inf in information:  #循环输出列表“demo”的每行内容
	#使用json方法将“unicode”格式打印成中文
	#使用re文法将“[]”去掉
	inf1 = re.sub(r'["[",\]]', '', json.dumps(inf).decode('unicode-escape'))
	inf2 = re.sub(r'[""",\"]', '', inf1)  #使用re方法将“ “” ”去掉
	print inf2
conn.close()  #关闭数据库

运行结果:
这里写图片描述

  • 作者:杨贵安
  • 原文链接:https://blog.csdn.net/yga_airspace/article/details/82316310
    更新时间:2023-04-25 21:47:20