加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Python?操作sqlite3数据库

发布时间:2022-10-17 13:31:54 所属栏目:MySql教程 来源:未知
导读: 在本文中,让我们将使用 sqlite3 模块创建一个诗人(poet)数据库和一个诗人表数据库插入操作,然后将诗人条目插入表中,然后从表中再次检索它并在控制台上显示它, 基本上,sqlite3 将基于

在本文中,让我们将使用 sqlite3 模块创建一个诗人(poet)数据库和一个诗人表数据库插入操作,然后将诗人条目插入表中,然后从表中再次检索它并在控制台上显示它, 基本上,sqlite3 将基于 SQL 命令创建数据库和表,插入、删除和检索条目,因此该模块本身实际上是一个 SQL 包装器对象。

下面的程序将创建一个数据库来保存我的诗人和诗人的创建日期。之后,我可以进入诗人并将其保存在诗人表中, 最后,所有这些诗人都将被检索并显示在控制台上。

在使用 sqlite3 模块之前,需要先导入它,这是内置模块,因此只需将其导入 python 文件,如下所示:

import datetime
import sqlite3

除此之外,还需要导入 datetime 模块来记录诗人的创作日期。

接下来,如果尚未创建数据库,python 程序将创建数据库,如果尚未创建,则创建诗人表,注意 sqlite_master 表是 SQLite 内置的,它包含诗人表定义的条目,如果 该表已创建,否则下面的 python 程序将首次创建该表。

try:
? ?con = sqlite3.connect("poet.db") # 开始连接到当前工作目录中的诗人数据库poet.db,如果尚未创建数据库,则创建它
? ?cur = con.cursor() # 创建游标

? ?# 如果已经创建了诗人表,则获取它的名称,否则创建它
? ?res = cur.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='poet'")
? ?name_list = res.fetchall()[0][0]
? ?if name_list != 'poet':
? ? ? ?cur.execute("CREATE TABLE poet(poet, year)")

? ?poet = input("Enter your poet: ") # gets the user input
? ?cur.execute("INSERT INTO poet VALUES(?, ?)", (poet, datetime.datetime.now())) # 插入数据到表中
? ?con.commit()

? ?for row in cur.execute("SELECT poet, year FROM poet ORDER BY year"): # 检索数据从表中
? ? ? ?print(row[0] + " - " + row[1]) # 按行打印数据
? ?cur.close() # 关闭游标
? ?con.close() # 关闭连接
except sqlite3.OperationalError:
? ? ? ?print("error occur")

然后程序将要求用户输入诗人,然后将其保存到表中,必须在连接对象上调用 con.commit() 来提交事务,以便将诗人和日期插入表中。

为了避免SQL注入攻击,你应该经常使用?将数据绑定到查询的占位符,如下所示:-

cur.execute("INSERT INTO poet VALUES(?, ?)", (poet, datetime.datetime.now()))

最后,程序将从诗人表中查询输入的所有诗人,然后在 for 循环中将它们打印出来, 每行都包含来自诗人表的条目, 需要注意,整个代码都包含在 try 和 except 块中,如果发生错误,它将向用户打印错误信息。

原文:

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!