Python怎么用SQLite数据库?

张开发
2026/4/17 13:47:17 15 分钟阅读

分享文章

Python怎么用SQLite数据库?
SQLite - Python安装SQLite3 可使用 sqlite3 模块与 Python 进行集成。sqlite3 模块是由 Gerhard Haring 编写的。它提供了一个与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。您不需要单独安装该模块因为 Python 2.5.x 以上版本默认自带了该模块。为了使用 sqlite3 模块您首先必须创建一个表示数据库的连接对象然后您可以有选择地创建光标对象这将帮助您执行所有的 SQL 语句。Python sqlite3 模块 API以下是重要的 sqlite3 模块程序可以满足您在 Python 程序中使用 SQLite 数据库的需求。如果您需要了解更多细节请查看 Python sqlite3 模块的官方文档。序号API 描述1sqlite3.connect(database [,timeout ,other optional arguments])该 API 打开一个到 SQLite 数据库文件 database 的链接。您可以使用 :memory: 来在 RAM 中打开一个到 database 的数据库连接而不是在磁盘上打开。如果数据库成功打开则返回一个连接对象。当一个数据库被多个连接访问且其中一个修改了数据库此时 SQLite 数据库被锁定直到事务提交。timeout 参数表示连接等待锁定的持续时间直到发生异常断开连接。timeout 参数默认是 5.05 秒。如果给定的数据库名称 filename 不存在则该调用将创建一个数据库。如果您不想在当前目录中创建数据库那么您可以指定带有路径的文件名这样您就能在任意地方创建数据库。2connection.cursor([cursorClass])该例程创建一个cursor将在 Python 数据库编程中用到。该方法接受一个单一的可选的参数 cursorClass。如果提供了该参数则它必须是一个扩展自 sqlite3.Cursor 的自定义的 cursor 类。3cursor.execute(sql [, optional parameters])该例程执行一个 SQL 语句。该 SQL 语句可以被参数化即使用占位符代替 SQL 文本。sqlite3 模块支持两种类型的占位符问号和命名占位符命名样式。例如cursor.execute(insert into people values (?, ?), (who, age))4connection.execute(sql [, optional parameters])该例程是上面执行的由光标cursor对象提供的方法的快捷方式它通过调用光标cursor方法创建了一个中间的光标对象然后通过给定的参数调用光标的 execute 方法。5cursor.executemany(sql, seq_of_parameters)该例程对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令。6connection.executemany(sql[, parameters])该例程是一个由调用光标cursor方法创建的中间的光标对象的快捷方式然后通过给定的参数调用光标的 executemany 方法。7cursor.executescript(sql_script)该例程一旦接收到脚本会执行多个 SQL 语句。它首先执行 COMMIT 语句然后执行作为参数传入的 SQL 脚本。所有的 SQL 语句应该用分号 ; 分隔。8connection.executescript(sql_script)该例程是一个由调用光标cursor方法创建的中间的光标对象的快捷方式然后通过给定的参数调用光标的 executescript 方法。9connection.total_changes()该例程返回自数据库连接打开以来被修改、插入或删除的数据库总行数。10connection.commit()该方法提交当前的事务。如果您未调用该方法那么自您上一次调用 commit() 以来所做的任何动作对其他数据库连接来说是不可见的。11connection.rollback()该方法回滚自上一次调用 commit() 以来对数据库所做的更改。12connection.close()该方法关闭数据库连接。请注意这不会自动调用 commit()。如果您之前未调用 commit() 方法就直接关闭数据库连接您所做的所有更改将全部丢失13cursor.fetchone()该方法获取查询结果集中的下一行返回一个单一的序列当没有更多可用的数据时则返回 None。14cursor.fetchmany([sizecursor.arraysize])该方法获取查询结果集中的下一行组返回一个列表。当没有更多的可用的行时则返回一个空的列表。该方法尝试获取由 size 参数指定的尽可能多的行。15cursor.fetchall()该例程获取查询结果集中所有剩余的行返回一个列表。当没有可用的行时则返回一个空的列表。连接数据库下面的 Python 代码显示了如何连接到一个现有的数据库。如果数据库不存在那么它就会被创建最后将返回一个数据库对象。实例#!/usr/bin/pythonimport sqlite3conn sqlite3.connect(test.db)print (数据库打开成功)在这里您也可以把数据库名称复制为特定的名称:memory:这样就会在 RAM 中创建一个数据库。现在让我们来运行上面的程序在当前目录中创建我们的数据库test.db。您可以根据需要改变路径。保存上面代码到 sqlite.py 文件中并按如下所示执行。如果数据库成功创建那么会显示下面所示的消息$chmod x sqlite.py $./sqlite.py Open database successfully创建表下面的 Python 代码段将用于在先前创建的数据库中创建一个表实例#!/usr/bin/pythonimport sqlite3conn sqlite3.connect(test.db)print (数据库打开成功)c conn.cursor()c.execute(CREATE TABLE COMPANY(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL);)print (数据表创建成功)conn.commit()conn.close()上述程序执行时它会在test.db中创建 COMPANY 表并显示下面所示的消息数据库打开成功 数据表创建成功INSERT 操作下面的 Python 程序显示了如何在上面创建的 COMPANY 表中创建记录实例#!/usr/bin/pythonimport sqlite3conn sqlite3.connect(test.db)c conn.cursor()print (数据库打开成功)c.execute(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (1, Paul, 32, California, 20000.00 ))c.execute(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (2, Allen, 25, Texas, 15000.00 ))c.execute(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (3, Teddy, 23, Norway, 20000.00 ))c.execute(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (4, Mark, 25, Rich-Mond , 65000.00 ))conn.commit()print (数据插入成功)conn.close()上述程序执行时它会在 COMPANY 表中创建给定记录并会显示以下两行数据库打开成功 数据插入成功SELECT 操作下面的 Python 程序显示了如何从前面创建的 COMPANY 表中获取并显示记录#!/usr/bin/python实例import sqlite3conn sqlite3.connect(test.db)c conn.cursor()print (数据库打开成功)cursor c.execute(SELECT id, name, address, salary from COMPANY)for row in cursor:print ID , row[0]print NAME , row[1]print ADDRESS , row[2]print SALARY , row[3], \nprint (数据操作成功)conn.close()上述程序执行时它会产生以下结果数据库打开成功 ID 1 NAME Paul ADDRESS California SALARY 20000.0 ID 2 NAME Allen ADDRESS Texas SALARY 15000.0 ID 3 NAME Teddy ADDRESS Norway SALARY 20000.0 ID 4 NAME Mark ADDRESS Rich-Mond SALARY 65000.0 数据操作成功UPDATE 操作下面的 Python 代码显示了如何使用 UPDATE 语句来更新任何记录然后从 COMPANY 表中获取并显示更新的记录实例#!/usr/bin/pythonimport sqlite3conn sqlite3.connect(test.db)c conn.cursor()print (数据库打开成功)c.execute(UPDATE COMPANY set SALARY 25000.00 where ID1)conn.commit()print Total number of rows updated :, conn.total_changescursor conn.execute(SELECT id, name, address, salary from COMPANY)for row in cursor:print ID , row[0]print NAME , row[1]print ADDRESS , row[2]print SALARY , row[3], \nprint (数据操作成功)conn.close()上述程序执行时它会产生以下结果数据库打开成功 Total number of rows updated : 1 ID 1 NAME Paul ADDRESS California SALARY 25000.0 ID 2 NAME Allen ADDRESS Texas SALARY 15000.0 ID 3 NAME Teddy ADDRESS Norway SALARY 20000.0 ID 4 NAME Mark ADDRESS Rich-Mond SALARY 65000.0 数据操作成功DELETE 操作下面的 Python 代码显示了如何使用 DELETE 语句删除任何记录然后从 COMPANY 表中获取并显示剩余的记录实例#!/usr/bin/pythonimport sqlite3conn sqlite3.connect(test.db)c conn.cursor()print (数据库打开成功)c.execute(DELETE from COMPANY where ID2;)conn.commit()print Total number of rows deleted :, conn.total_changescursor conn.execute(SELECT id, name, address, salary from COMPANY)for row in cursor:print ID , row[0]print NAME , row[1]print ADDRESS , row[2]print SALARY , row[3], \nprint (数据操作成功)conn.close()上述程序执行时它会产生以下结果数据库打开成功 Total number of rows deleted : 1 ID 1 NAME Paul ADDRESS California SALARY 20000.0 ID 3 NAME Teddy ADDRESS Norway SALARY 20000.0 ID 4 NAME Mark ADDRESS Rich-Mond SALARY 65000.0 数据操作成功

更多文章