Python 2.7 SQLite3 基础操作指南:增删查改与中文处理

温以宁
温以宁
发布时间:2026-10-13| 2人浏览过
原创

本文详解 Python 2.7 环境下 SQLite3 的基本操作方法,涵盖建表、插入、删除及查询记录。重点解析中文数据存入与读取时的编码转换问题(GBK 与 UTF-8),并提供防止 SQL 注入及处理重复记录的实用代码示例,适合 Python 初学者参考。

本文详细介绍 Python 2.7 中 SQLite3 数据库的基本操作方法,旨在为读者提供实用的代码示例与参考。

1、基本操作流程

# -*- coding: utf-8 -*-
#!/usr/bin/env python
import sqlite3
def mykey(x):
  return x[3]
conn=sqlite3.connect("D:\\demo\\my_db.db")
sql = "CREATE TABLE IF NOT EXISTS mytb ( a char , b int , c real, d DATE)"
# a char , b int , c real 表示该表有三个字段,
# a 是字符串类型, b 是整数类型, c 是实数类型。
conn.execute( sql )
cs = conn.cursor()
#cs.execute("DELETE FROM mytb WHERE A='张三' ")
cs.execute("DELETE FROM mytb  ")
#删除所有记录
'''''
cs.execute( "INSERT INTO mytb ( a,b,c,d ) values('Zhang San',25, 120, '2014-03-04')" )
cs.execute( "INSERT INTO mytb ( a,b,c,d ) values( 'Wang Wu',24, 110, '2014-05-01')" )
cs.execute( "INSERT INTO mytb ( a,b,c,d ) values( 'Li Si',23, 130, '2014-04-06')" )
'''
#批量注入,batchdata是一个列表,列表里每一个元素都是一个元组
batchdata=[('Zhang San',25, 120, '2014-03-04'),
      ( 'Wang Wu',24, 110, '2014-05-01'),
      ( 'Li Si',23, 130, '2014-04-06')]
cs.executemany('INSERT INTO mytb values (?,?,?,?)',batchdata)
conn.commit() #将加入的记录保存到磁盘,非常重要!
cs.execute("SELECT name, sql FROM sqlite_master WHERE type='table'")
recs = cs.fetchall( )
print ( recs )
cs.execute( "SELECT * FROM mytb ")#打开数据表
recs = cs.fetchall()#取出所有记录
print ( "there is ", len(recs)," notes." )
print recs
recs.sort(key = mykey)
print recs
cs.close()
conn.close()

2、删除指定记录:通过构建包含参数的 SQL 字符串变量,可以实现带条件的数据删除操作。

sql="DELETE FROM my_table WHERE number='" + my_num + "'"
cs.execute(sql)

3、查询单条或多条记录:从数据库中检索特定数据。

当 SQLite3 数据库记录中包含中文字符时,在 Python 中取出数据需进行解码处理。此前网络资料多建议使用 GBK 解码,但实际测试中该方式可能导致失败,改用 UTF-8 解码方可正确显示中文内容。此外,若仅需查询单条记录,可使用 fetchone 方法;若使用 fetchall 获取所有结果,也可通过 Python 逻辑从中筛选出目标数据。

sql="SELECT name FROM my_table WHERE number ='" + my_num + "'"
cs.execute(sql)
the_name=(cs.fetchall())[0][0].decode('utf-8')

4、防止重复插入与注入风险

当数据库中已存在相同记录时,为避免重复插入,可采用以下语句进行处理。

sql="INSERT OR REPLACE INTO "+my_table+" values (?,?,?,?,?,?,?) "
#假设my_table有7项

5、向 SQLite3 插入中文记录

Python 默认使用 Unicode 编码,而 SQLite3 数据库对中文通常采用 GBK 编码。例如,若变量 stock_name 包含中文内容,需先执行 unicode(name, "gbk") 进行编码转换后再存入数据库。

batch=[(stock_num, unicode(stock_name, "gbk") )]
cs.executemany( "INSERT OR REPLACE INTO my_table values (?,?) ",batch)

如需了解更多 Python 相关内容,可参考本站专题:《Python 操作 SQLite 数据库技巧总结》、《Python 常见数据库操作技巧汇总》、《Python 数据结构与算法教程》、《Python 函数使用技巧总结》、《Python 字符串操作技巧汇总》、《Python 入门与进阶经典教程》及《Python 文件与目录操作技巧汇总》。

希望本文所述内容能对读者的 Python 程序设计工作有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。