You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Python的sqlite3模块连接本地SQLite数据库及执行脚本?

嘿,别担心,这些问题其实用Python自带的sqlite3模块就能全部搞定,完全不需要第三方软件,比MySQL的连接方式还简单呢!我给你一步步讲清楚:

连接已有的本地SQLite文件

你之前用:memory:连接内存数据库,换成本地文件路径就行啦!比如你的文件叫example.sqlite,和Python脚本在同一个文件夹里,直接写:

import sqlite3
con = sqlite3.connect("example.sqlite")

如果文件在其他目录,就写绝对路径

  • Windows系统:con = sqlite3.connect("C:/Users/你的用户名/Documents/example.sqlite")
  • Linux/macOS系统:con = sqlite3.connect("/home/你的用户名/example.sqlite")
    连接上之后,就可以用游标(cursor)执行各种SQL操作了,和内存数据库的操作逻辑完全一样。
创建新的本地SQLite数据库文件

这个更简单!你只需要给connect()方法传一个不存在的文件名,它就会自动帮你创建这个数据库文件。比如你想新建一个my_new_db.sqlite

con = sqlite3.connect("my_new_db.sqlite")
# 随便执行点操作(比如创建表),然后提交
cursor = con.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS products (id INTEGER PRIMARY KEY, name TEXT, price REAL)")
con.commit()
# 关闭连接后,文件就会出现在你的文件夹里了
con.close()

哪怕你什么操作都不做,只要调用了connect()并关闭连接,也会生成一个空的SQLite文件。

在Python模块内执行SQL脚本

有两种常用方式,看你需求选:

  1. 单条SQL语句执行:用cursor.execute()就行,适合简单的操作:
cursor = con.cursor()
# 比如插入数据(用占位符防止SQL注入)
cursor.execute("INSERT INTO users (name) VALUES (?)", ("Alice",))
con.commit()

这里的占位符?是SQLite推荐的写法,一定要养成这个好习惯哦。

  1. 执行整个SQL脚本文件:如果你的SQL语句很多(比如建表、初始化数据的脚本),可以直接读取文件内容,用executescript()执行:
    假设你有个init_schema.sql文件,内容是:
CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE IF NOT EXISTS orders (id INTEGER PRIMARY KEY, user_id INTEGER, amount REAL);
INSERT INTO users (name) VALUES ("Bob"), ("Charlie");

那在Python里这么写:

import sqlite3
con = sqlite3.connect("example.sqlite")
cursor = con.cursor()

# 读取SQL脚本文件
with open("init_schema.sql", "r", encoding="utf-8") as f:
    sql_content = f.read()

# 执行整个脚本
cursor.executescript(sql_content)
con.commit()
con.close()

executescript()会自动处理脚本里的多条SQL语句(用分号分隔的那种),非常方便。

对了,和你之前用MySQL的PyMySQL对比一下:SQLite是文件型数据库,不需要启动服务器,也不需要用户名、密码这些凭证,直接通过文件路径连接就行,这是它和MySQL这类客户端-服务器型数据库最大的区别。

内容的提问来源于stack exchange,提问作者user13646253

火山引擎 最新活动