在 Python 中使用 SQL 时,如何记住该用的函数和正确写法?
数据小许
把常用写法按任务整理成速查表,再用几个小例子反复练习。先分清 SQL 语句和 Python 库的方法,熟悉它们如何配合,通常比单独背函数名更容易。
先弄清楚自己在记哪一层
在 Python 中操作数据库时,通常会遇到几类内容:
- SQL 语句和函数:用
SELECT、WHERE、JOIN、COUNT()等表达查询或数据处理需求。其中SELECT和WHERE是关键字,不是函数。 - 数据库的 SQL 方言:BigQuery 和 MySQL 的基础语法有不少相似之处,但不能完全通用,日期处理、类型转换等写法可能不同。
- Python 库的方法:建立连接、提交 SQL 和读取查询结果等操作,具体方法取决于所使用的库。
Python 没有一套适用于所有数据库的 SQL 操作函数。原问题没有说明使用哪个库,因此无法直接列出一份通用的函数清单。
按任务做一张小型速查表
先选定一个数据库和对应的 Python 库,把最常用的操作整理出来。下面以 Python 的 sqlite3 为例:
| 想完成的任务 | 对应写法 |
|---|---|
| 建立数据库连接 | sqlite3.connect(...) |
| 执行 SQL | connection.execute(...) |
| 筛选数据 | SQL 中使用 WHERE |
| 排序 | SQL 中使用 ORDER BY |
| 分组统计 | SQL 中使用 GROUP BY 和聚合函数 |
| 从游标读取一行结果 | cursor.fetchone() |
| 从游标读取所有剩余结果 | cursor.fetchall() |
| 提交事务 | connection.commit() |
| 关闭连接 | connection.close() |
表中的 Python 方法适用于 sqlite3。换用 MySQL 驱动或 BigQuery 客户端库时,需要按照相应接口调整,不能只替换数据库名称。
用一个完整例子记住调用顺序
下面的例子可以独立运行,使用内存中的 SQLite 数据库:
import sqlite3
connection = sqlite3.connect(":memory:")
try:
connection.execute(
"CREATE TABLE users (name TEXT, age INTEGER)"
)
connection.execute(
"INSERT INTO users (name, age) VALUES (?, ?)",
("Alice", 25),
)
connection.commit()
cursor = connection.execute(
"SELECT name, age FROM users WHERE age >= ?",
(18,),
)
rows = cursor.fetchall()
print(rows)
finally:
connection.close()
可以把查询过程记成:建立连接、执行 SQL、读取结果,最后关闭连接。
注意区分下面几处写法:
SELECT ... WHERE ...是交给 SQLite 执行的 SQL。execute()和fetchall()是 Python 库提供的方法。?是sqlite3使用的参数占位符,其他库的写法可能不同。(18,)是只有一个元素的元组,末尾的逗号不能省略。
传入数据值时,用参数绑定,避免通过字符串拼接或 f-string 将值直接插入 SQL。表名、列名等标识符通常不能用同样的占位符方式传入。
用小练习建立记忆
练习时,每次只改一个需求:比如把年龄筛选改为姓名筛选,增加排序,或统计满足条件的人数。先自己尝试,再对照速查表和所用库的文档检查。
出错时,先判断是 SQL 写法、Python 方法调用,还是连接或数据出了问题。把出错的写法和修正后的例子放在一起记录,会比收藏一长串函数名更有帮助。
先熟悉高频操作。对不常用的函数,记住用途和查找位置,使用时再确认参数和返回值。
备注:内容仅供参考。
