Python操作SQLite数据库

简介:

连接数据库

从2.5版本开始,Python的标准库中就有了一个专门用于SQLite的sqlite3模块。连接SQLite数据库方式如下:

import sqlite3 as dbapi
con = dbapi.connect('population.db')
cur = con.cursor()

第一个语句用于引用数据库API;
第二个语句创建了一个到数据库的连接(connection):调用数据库模块的connect方法。该方法的参数是一个字符串,它定义了我们所要连接的那个数据库。由于SQLite是将整个数据库保存在磁盘上的某个文件中的,因此这里就是该文件的路径。如果该数据库不存在,就会直接创建出来;
第三个语句用于获取一个游标,它类似于文本编辑器中的光标,用于记录我们当前在数据库中的位置;当多个程序同时访问数据库时,该数据库可以知道谁在干什么。

数据类型对比

SQLite Python 说明
NULL NontType 啥也不知道
INTEGER int或long 整数
REAL float 8字节浮点数
TEXT unicode或str 字符串
BLOB buffer 二进制数据(Binary Large OBject)

操作数据库

现在我们就可以操作数据库了,我们将要执行的SQL语句放到一个字符串中,并告诉数据库去执行这个字符串,如下所示:

cur.execute('CREATE TABLE Student(Stuid TEXT, Age INTERGER, Name TEXT)')
cur.execute('INSERT INTO Student VALUES("00001", 20, "Lucy")')
cur.execute('INSERT INTO Student VALUES("00002", 21, "Lily")')

在将数据库插入到数据库或对数据库做了任何其他修改之后,我们必须通过连接的commit方法提交(commit)这些修改:

con.commit()

现在我们可以用如下方式来获取数据:

cur.execute('SELECT * FROM Student')
print(cur.fetchone())
print(cur.fetchall())

fetchone方法以元组的形式返回每条记录,其中各元素按查询所指定的顺序排列。如果不再有其他记录存在,则返回None。默认情况下,数据库中的TEXT是以Unicode字符串的形式返回的,我们可以告诉sqlite3以str的类型返回字符串:将连接的text_factory成员设置为类型str。

con.text_factory = str

fetchall方法的功能是以元组列表的形式返回查询所产生的全部数据。

一种较为快捷的插入方式:

ss = [("00003", 20, "David"), ("00004", 23, "Cneagle"),
      ("00005", 22, "qxzy")]
for s in ss:
    cur.execute('INSERT INTO Student VALUES(?, ?, ?)', (s[0], s[1], s[2]))
con.commit()

这次execute的调用用到了两个参数,第一个是带有问号的SQL语句,这些问号是将要插入的值的占位符,第二个是由待插入值所组成的元组,数据库在执行该语句时,会用这些值从左到右地替换那些问号。

注意:

  • SQL的数据类型与编程语言中的数据类型并不完全相同,因此在编写应用程序的时候很有必要在它们之间进行类型转换。
  • 在被提交之前,对数据库做出的修改不会有任何效果。这保证了当数据库被两个以上的程序同时操作时,能够保持一致的状态。
转载:http://blog.csdn.net/foreverling/article/details/44906393
目录
相关文章
|
7天前
|
索引 Python
Python的列表操作有哪些?
Python的列表操作非常丰富,包括列表的创建、元素的访问、修改、添加、删除、切片、排序等多个方面。
25 12
|
2天前
|
SQL 存储 PHP
PHP中使用SQLite数据库
SQLite是一种轻量级数据库引擎,数据以文件存储,支持SQL操作。PHP可连接SQLite执行CRUD操作。
|
9天前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之重新上传后只有SQL无法运行,而Python可以正常运行,是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
10天前
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错合集之cdc postgres数据库,当表行记录修改后报错,该如何修改
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10天前
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10天前
|
关系型数据库 Java 数据库
实时计算 Flink版操作报错合集之flinksql采PG数据库时报错,该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10天前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之在处理PostgreSQL数据库遇到报错。该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10天前
|
消息中间件 关系型数据库 数据库
实时计算 Flink版操作报错合集之在使用RDS数据库作为源端,遇到只能同步21个任务,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
16天前
|
SQL 存储 数据挖掘
深入了解SQLite3命令:小巧强大的数据库工具
SQLite3是轻量级数据库工具,适用于嵌入式设备和数据分析。它提供交互式shell,无需服务器,易于部署。常用命令如`.schema`显示表结构,`.mode`设置输出格式。示例包括创建数据库`mydatabase.db`,创建表`users`,插入数据并查询。注意动态类型系统、性能限制及SQL注入安全。适合轻量级数据存储和管理。
|
15天前
|
Python