Python中如何将服务器URL连接到sqlite3数据库
问题原因
SQLite是嵌入式文件型数据库,Python内置的sqlite3标准库仅支持读取本地文件路径下的数据库文件,不支持直接传入HTTP/HTTPS等网络URL作为连接参数。你传入的远程服务器URL会被sqlite3.connect()识别为本地文件名,在本地磁盘搜索对应名称的文件自然找不到,因此连接失败。
可行解决方案
- 方案1:先下载远程数据库文件到本地再操作
如果你的远程服务器仅做静态存储、不需要同步写入修改,可以先把.db文件下载到本地临时目录,再通过本地路径连接操作,示例代码如下:
import sqlite3 import requests # 远程数据库地址 db_url = "http://{Servername}/python/mydatabase.db" # 本地临时存储路径 local_db_path = "temp_mydatabase.db" # 下载远程db文件 res = requests.get(db_url) with open(local_db_path, "wb") as f: f.write(res.content) # 连接本地db文件操作 connection = sqlite3.connect(local_db_path) crsr = connection.cursor() crsr.execute("SELECT * FROM data") # 后续操作完可根据需要删除本地临时db文件
注意这个方案仅适合只读查询场景,你在本地对db的修改不会同步回远程服务器。
- 方案2:换用支持远程连接的数据库
如果需要多端远程读写、实时同步数据,SQLite本身的设计不支持这类场景,建议更换为MySQL、PostgreSQL等客户端-服务端架构的关系型数据库,这类数据库原生支持通过网络地址、账号密码验证远程连接操作。 - 方案3:在远程服务器部署接口中转数据库操作
如果一定要用SQLite存储数据,可以在托管数据库的服务器上写后端接口,把增删改查操作封装成HTTP接口,本地程序通过调用接口实现数据操作,避免直接读写远程SQLite文件。
内容的提问来源于stack exchange,提问作者sam prgrammer
相关产品推荐
相关产品推荐

