目录
前言
从Python3.新版本开始,在标注库中已经内置了SQLite3模块,它可以支持SQLite3数据库的访问和相关的数据库操作。在需要操作SQLite3数据库数据时,只须在程序中导入SQLite3模块即可。Python语言操作SQLite3数据库的基本流程如下所示。
- 导入相关库或模块(SQLite3)
- 使用connect()连接数据库并获取数据库连接对象。它提供了以下方法:
- 使用con.cursor()获取游标对象
- 使用游标对象的方法(execute()、executemany()、fetchall()等)来操作数据库,实现插入、修改和删除操作,并查询获取显示相关的记录。在Python程序中,连接函数sqlite.connect()有如下两个常用参数:database表示要访问的数据库名;timeout表示访问数据的超时设定。
- 使用close()关闭游标对象和数据库连接。数据库操作完成之后,必须及时调用其close()方法关闭数据库连接,这样做的目的是减轻数据库服务器的压力。
一、数据库的连接与表的创建
代码示例(db文件要提前创建好):
#1 导入sqlite3模块
import sqlite3
#2 创建连接sqlite.conneect()
conn = sqlite3.connect('../db文件/test.db')
#3 创建游标对象
cur = conn.cursor()
#4 编写创建表的sql语句
sql='''CREATE TABLE 南4_person(
pno INTEGER primary key autoincrement,
pname VARCHAR not null ,
age INTEGER)'''
try:
# 5 执行sql语句
cur.execute(sql)
print('表创建成功')
except BaseException as e:
print(e)
print('表创建失败')
finally:
# 6 关闭连接
cur.close()
conn.close()
二、使用SQLite3插入数据
调用游标对象的execute执行插入的sql,使用executemany()执行多条sql语句,使用executemany()比循环使用execute()执行多条sql语句效率高。
1.execute()
代码如下(示例):
import sqlite3
conn = sqlite3.connect('../db文件/test.db')
cur=conn.cursor()
sql="insert into 南4_person(pname,age) values(?,?)"
try:
cur.execute(sql,('朱元璋',60))
conn.commit()
print('数据插入成功')
except Exception as e:
print(e)
print('数据插入失败')
conn.rollback()
finally:
cur.close()
conn.close()
2.executemany()
代码如下(示例):
import sqlite3
conn = sqlite3.connect('../db文件/test.db')
cur=conn.cursor()
sql="insert into 南4_person(pname,age) values(?,?)"
try:
cur.executemany(sql,[('朱标',30),('朱允炆',10)])
conn.commit()
print('多条数据插入成功')
except Exception as e:
print(e)
print('数据插入失败')
conn.rollback()
finally:
cur.close()
conn.close()
三、使用SQLite3查询数据
查询数据,游标对象提供了fetchall()和fetchone()方法。fetchall()方法获取所有数据,返回一个列表。fetchone()方法获取其中一个结果,返回一个元组。
1.fetchall()查询所有数据
代码如下(示例):
import sqlite3
conn=sqlite3.connect('../db文件/test.db')
cur=conn.cursor()
sql="SELECT * FROM 南4_person"
try:
cur.execute(sql)
all_sql=cur.fetchall()
for row in all_sql:
print(row)
except BaseException as e:
print(e)
print('数据查询失败')
finally:
cur.close()
conn.close()
结果:

2.fetchone()——只取最上面的第一条结果
可多次循环使用cur.fetchone()获取整个表的内容。
代码如下(示例):
import sqlite3
conn=sqlite3.connect('../db文件/test.db')
cur=conn.cursor()
sql="SELECT * FROM 南4_person"
try:
cur.execute(sql)
for row in range(3):
print(cur.fetchone())
except BaseException as e:
print(e)
print('数据查询失败')
finally:
cur.close()
conn.close()
结果:

四、使用SQLite3更新数据
代码如下(示例):
import sqlite3
conn=sqlite3.connect('../db文件/test.db')
cur=conn.cursor()
sql="SELECT * FROM 南4_person"
try:
cur.execute(sql)
all_sql=cur.fetchall()
for row in all_sql:
print(row)
except BaseException as e:
print(e)
print('数据查询失败')
finally:
cur.close()
conn.close()
更新后的结果为:

五、使用SQLite3删除数据
代码如下(示例):
import sqlite3
conn=sqlite3.connect('../db文件/test.db')
cur=conn.cursor()
sql="delete from 南4_person where pname=?"
try:
cur.execute(sql,('马皇后',))
conn.commit()
print('数据删除成功')
except BaseException as e:
print(e)
print('数据删除失败')
finally:
cur.close()
conn.close()
删除完成后的结果为:

总结
- .cursor()方法来创建一个游标对象
- .commit()方法来处理事务提交
- .rollback()方法来处理事务回滚
- .close()方法来关闭一个数据库连接

2433

被折叠的 条评论
为什么被折叠?



