SQLite的使用

SQLite的使用

在本节中,我们将学习如何在 Python 中使用 SQLite 数据库。SQLite 是一种轻量级的数据库,它不需要独立的服务器进程,可以直接保存在文件中,非常适合嵌入式系统或小型应用程序的开发。

1. 什么是 SQLite

SQLite 是一个自给自足的、无服务器的、零配置的、跨平台的 SQL 数据库引擎。它的主要特点包括:

  • 轻量级:SQLite 的便携性和小型化使其非常便于使用。
  • 跨平台:支持多种操作系统。
  • 无服务器:无需单独的服务器进程。

2. 安装和导入

在 Python 中使用 SQLite,无需额外安装,因为 Python 内置了对 SQLite 的支持。你可以直接导入 sqlite3 模块。

1
import sqlite3

3. 创建数据库连接

通过 sqlite3.connect() 方法,我们可以创建一个连接到 SQLite 数据库的对象。如果数据库文件不存在,将会自动创建一个新的数据库文件。

1
connection = sqlite3.connect('example.db')

这里,example.db 是数据库文件的名称。

4. 创建游标

通过连接对象,我们可以获取一个游标对象,该对象允许我们执行 SQL 查询和命令。

1
cursor = connection.cursor()

5. 创建表

使用 CREATE TABLE SQL 语句来创建表。下面是创建一个名为 users 的表的示例:

1
2
3
4
5
6
7
cursor.execute('''
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')

此 SQL 语句会创建一个包含 idnameage 的表,其中 id 是主键。

6. 插入数据

使用 INSERT INTO 语句可以向表中插入数据。以下是插入数据的示例:

1
2
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 30))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 25))

在这里,我们使用了占位符 ? 来防止 SQL 注入。

7. 查询数据

可以使用 SELECT 语句从表中查询数据。以下是查询表中所有用户的示例:

1
2
3
4
5
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()

for row in rows:
print(row)

fetchall() 方法会返回所有查询结果,而 for 循环将遍历每一行。

8. 更新数据

使用 UPDATE 语句可以更新表中的记录。以下是将用户 Alice 的年龄更新为 31 的示例:

1
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (31, "Alice"))

9. 删除数据

要删除数据库中的记录,可以使用 DELETE 语句。以下是删除用户 Bob 的示例:

1
cursor.execute("DELETE FROM users WHERE name = ?", ("Bob",))

10. 提交事务

使用 SQLite 时,所有修改(插入、更新、删除)都需要提交到数据库。可以调用 commit() 方法:

1
connection.commit()

11. 关闭连接

在操作完成后,别忘了关闭游标和连接:

1
2
cursor.close()
connection.close()

12. 完整示例

下面是一个完整的例子,演示上述所有步骤:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import sqlite3

# 创建数据库连接
connection = sqlite3.connect('example.db')

# 创建游标
cursor = connection.cursor()

# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 30))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 25))

# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print("Users:")
for row in rows:
print(row)

# 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (31, "Alice"))

# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ("Bob",))

# 提交事务
connection.commit()

# 查询更新后的数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
print("Updated Users:")
for row in rows:
print(row)

# 关闭游标和连接
cursor.close()
connection.close()

13. 小结

通过本节的学习,我们了解了如何在 Python 中使用 SQLite 进行基本的数据库操作,包括创建数据库、创建表、插入、查询、更新和删除数据。SQLite 是一个非常强大的工具,适用于轻量级应用开发。

`for` 和 `while`

`for` 和 `while`

在 Python 中,循环语句允许我们重复执行一段代码。主要有两种循环:for 循环和 while 循环。下面将详细介绍这两种循环的用法。

1. for 循环

for 循环用于遍历可迭代对象(例如列表、元组、字典、集合或字符串)。其基本语法如下:

1
2
for 变量 in 可迭代对象:
# 循环体

1.1 示例

下面是一个简单的示例,使用 for 循环遍历一个列表并打印每个元素:

1
2
3
fruits = ['苹果', '香蕉', '橘子']
for fruit in fruits:
print(fruit)

在这个例子中,fruit 是我们在每次循环中使用的变量,它会依次取值为 苹果香蕉橘子,并且打印出来。

1.2 使用 range()

for 循环通常结合 range() 函数使用,以产生一系列数字:

1
2
for i in range(5):
print(i)

这种方法将输出:

1
2
3
4
5
0
1
2
3
4

range(5) 生成从 04 的整数序列。

2. while 循环

while 循环会在给定条件为 True 时不断重复执行循环体。其基本语法如下:

1
2
while 条件:
# 循环体

2.1 示例

下面是一个使用 while 循环的简单示例:

1
2
3
4
count = 0
while count < 5:
print(count)
count += 1 # 每次循环后将 count 加 1

在这个例子中,循环会打印 04 的数字。当 count 增加到 5 时,条件 count < 5 不再成立,循环停止。

2.2 注意事项

使用 while 循环时必须确保循环条件最终会变为 False,否则就会导致无限循环。例如:

1
2
3
4
count = 0
while count < 5:
print(count)
# 如果这里没有 count += 1,就会形成无限循环

3. 循环控制语句

在 Python 中,我们还可以使用 breakcontinue 来控制循环的执行。

3.1 break

break 语句用于终止循环,例如:

1
2
3
4
for i in range(10):
if i == 5:
break # 当 i 等于 5 时停止循环
print(i)

输出将会是:

1
2
3
4
5
0
1
2
3
4

3.2 continue

continue 语句用于跳过当前循环的剩余部分并继续到下一次循环。例如:

1
2
3
4
for i in range(10):
if i % 2 == 0:
continue # 如果 i 是偶数,跳过这次循环
print(i)

输出将会是:

1
2
3
4
5
1
3
5
7
9

结论

掌握 forwhile 循环是学习 Python 的重要一步。通过使用这些循环结构,我们可以有效地处理重复任务。在编写循环时,请注意明确循环条件,并合理使用控制语句 breakcontinue 来优化代码的执行。

17 Python 进阶到上手实战教程

17 Python 进阶到上手实战教程

小节:常用模块与标准库

Python 标准库是 Python 随附的一个强大功能库,提供了大量的模块和包。在这小节中,我们将介绍一些常用的模块和标准库。

1. os 模块

os 模块提供了与操作系统交互的功能,比如文件和目录操作。

1.1 文件和目录操作

  • 获取当前工作目录

    1
    2
    3
    4
    import os

    current_directory = os.getcwd()
    print(f"当前工作目录: {current_directory}")
  • 创建新目录

    1
    2
    3
    new_directory = 'new_folder'
    os.mkdir(new_directory)
    print(f"创建目录: {new_directory}")
  • 列出目录中的文件

    1
    2
    files = os.listdir(current_directory)
    print(f"目录中的文件: {files}")

2. sys 模块

sys 模块提供了一些与 Python 解释器和操作系统交互的功能。

2.1 命令行参数

我们可以使用 sys.argv 获取命令行参数。

1
2
3
4
5
6
7
import sys

if len(sys.argv) > 1:
print(f"脚本名: {sys.argv[0]}")
print(f"参数列表: {sys.argv[1:]}")
else:
print("没有提供参数")

3. math 模块

math 模块提供了许多数学函数。

3.1 常用函数

  • 计算平方根

    1
    2
    3
    4
    5
    import math

    number = 16
    sqrt_value = math.sqrt(number)
    print(f"{number} 的平方根是: {sqrt_value}")
  • 计算正弦

    1
    2
    3
    4
    angle = 30  # 角度
    radians = math.radians(angle)
    sine_value = math.sin(radians)
    print(f"{angle} 度的正弦值是: {sine_value}")

4. datetime 模块

datetime 模块用于处理日期和时间。

4.1 获取当前日期和时间

1
2
3
4
from datetime import datetime

now = datetime.now()
print(f"当前日期和时间: {now}")

4.2 日期计算

1
2
3
4
5
from datetime import timedelta

today = datetime.now()
tomorrow = today + timedelta(days=1)
print(f"明天的日期: {tomorrow}")

5. random 模块

random 模块实现了生成随机数的功能。

5.1 生成随机数

1
2
3
4
5
import random

# 生成 1 到 10 之间的随机整数
random_integer = random.randint(1, 10)
print(f"随机整数: {random_integer}")

5.2 从列表中选择随机元素

1
2
3
fruits = ['苹果', '香蕉', '橙子', '葡萄']
random_fruit = random.choice(fruits)
print(f"随机选择的水果: {random_fruit}")

6. json 模块

json 模块用于处理 JSON 数据。

6.1 JSON 编码与解码

1
2
3
4
5
6
7
8
9
10
import json

# 将字典编码为 JSON 字符串
data = {'name': 'Alice', 'age': 30}
json_str = json.dumps(data)
print(f"JSON 字符串: {json_str}")

# 将 JSON 字符串解码为字典
decoded_data = json.loads(json_str)
print(f"解码后的数据: {decoded_data}")

7. requests 模块

requests 模块用于发送 HTTP 请求。

7.1 发送 GET 请求

1
2
3
4
5
6
7
import requests

response = requests.get('https://api.github.com')
if response.status_code == 200:
print("成功获取响应:", response.json())
else:
print("请求失败,状态码:", response.status_code)

8. re 模块

re 模块用于处理正则表达式。

8.1 使用正则表达式匹配字符串

1
2
3
4
5
6
7
import re

text = "我的邮箱是 example@mail.com"
pattern = r'[\w.-]+@[\w.-]+'

matches = re.findall(pattern, text)
print("找到的邮箱地址:", matches)

总结

本小节介绍了 Python 中一些常用的标准库和模块,包括 ossysmathdatetimerandomjsonrequestsre。掌握它们将帮助你在 Python 开发中高效处理各种常见任务。