Python SQLite3 创建字段类型
简介
SQLite是一种嵌入式数据库引擎,使用SQL语言进行交互。它被广泛应用于移动设备和嵌入式系统中,也可以在服务器端和桌面应用中使用。Python提供了内置的sqlite3
模块,使得在Python程序中使用SQLite变得十分简单。
本文将介绍如何使用Python的sqlite3
模块创建SQLite数据库表,并设置不同字段类型。我们将学习如何创建整数、浮点数、文本、日期等不同类型的字段,并演示如何在这些字段上进行增删改查操作。
准备工作
在开始之前,我们需要确保已经安装了Python,并且sqlite3
模块已经可用。可以通过以下命令来检查是否已安装sqlite3
模块:
import sqlite3
print(sqlite3.version)
如果输出了版本号,则说明sqlite3
模块已经安装成功。
创建数据库和表
首先,我们需要创建一个SQLite数据库,并在其中创建一个表来存储数据。可以使用以下代码创建数据库和表:
import sqlite3
# 连接到数据库(如果不存在则会创建)
conn = sqlite3.connect('example.db')
# 创建一个游标对象,用于执行SQL语句
cursor = conn.cursor()
# 创建一个表
cursor.execute('''CREATE TABLE IF NOT EXISTS students
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
gpa REAL,
birthday DATE);''')
# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
上述代码创建了一个名为example.db
的数据库,并在其中创建了一个名为students
的表。students
表包含了五个字段:id
、name
、age
、gpa
和birthday
。其中,id
是主键,自动递增;name
是文本类型,不能为空;age
是整数类型;gpa
是浮点数类型;birthday
是日期类型。
插入数据
接下来,我们可以向表中插入一些数据。可以使用INSERT INTO
语句将数据插入表中。下面的代码示例插入了两个学生的数据:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 插入数据
cursor.execute("INSERT INTO students (name, age, gpa, birthday) VALUES (?, ?, ?, ?)",
('Alice', 20, 3.8, '2000-01-01'))
cursor.execute("INSERT INTO students (name, age, gpa, birthday) VALUES (?, ?, ?, ?)",
('Bob', 22, 3.5, '1998-05-10'))
# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()
上述代码使用了参数化查询,通过?
占位符来指定要插入的数据。这样可以避免SQL注入攻击,并提高执行效率。
查询数据
现在,我们可以从表中查询数据。可以使用SELECT
语句从表中选择数据。下面的代码示例查询了所有学生的姓名和年龄:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 查询数据
cursor.execute("SELECT name, age FROM students")
rows = cursor.fetchall()
# 输出查询结果
for row in rows:
print("Name: {}, Age: {}".format(row[0], row[1]))
# 关闭游标和连接
cursor.close()
conn.close()
上述代码通过SELECT name, age FROM students
语句查询了students
表中所有学生的姓名和年龄。然后,使用fetchall()
方法获取查询结果,并通过循环输出每条记录的姓名和年龄。
更新数据
如果需要修改表中已有的数据,可以使用UPDATE
语句。下面的代码示例将学生Alice
的年龄修改为21
:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 更新数据
cursor.execute("UPDATE students SET age = ? WHERE name = ?",
(21, 'Alice'))
# 提交事务
conn.commit()
# 关闭游标和连接
cursor.close()