如何通过Python从不同电脑连接Django的SQLite数据库?
跨电脑访问Django SQLite数据库的实现方案
嘿,刚好碰到过类似的需求,咱们来一步步解决这个问题~
首先得明确:SQLite是单文件型数据库,不像MySQL那种客户端-服务器架构,所以跨电脑访问的核心是让其他设备能访问到你的Django项目里的.db数据库文件,然后用Python连接操作它。
第一步:共享SQLite数据库文件
先把存放db.sqlite3的目录通过网络共享出去,给其他电脑读写权限:
- Windows:右键数据库所在文件夹 → 「共享」→ 设置共享权限,确保其他用户有「读写」权限(只给只读的话没法更新数据)
- macOS/Linux:用Samba或者NFS工具共享目录,配置好权限规则,让其他电脑可以挂载这个共享目录
⚠️ 划重点:权限一定要给够,不然要么连不上,要么只能查不能改!
第二步:Python脚本连接数据库的两种方式
方式1:直接用Python内置的sqlite3库
这是最轻量化的方式,不需要依赖Django,适合简单的查询、更新操作:
import sqlite3 # 替换成你的共享文件路径:Windows用\\主机名\共享目录\db.sqlite3,Linux/macOS用挂载后的路径 db_path = r"\\YourPCName\DjangoDBFolder\db.sqlite3" try: # 建立数据库连接 conn = sqlite3.connect(db_path) cursor = conn.cursor() # 示例:查询数据 cursor.execute("SELECT * FROM your_app_yourtable LIMIT 5;") for row in cursor.fetchall(): print(row) # 示例:更新数据(记得提交事务!) cursor.execute("UPDATE your_app_yourtable SET name = ? WHERE id = ?;", ("新名称", 1)) conn.commit() except sqlite3.Error as e: print(f"操作出错啦:{e}") finally: # 用完记得关闭连接 if conn: conn.close()
方式2:复用Django ORM(推荐给熟悉Django的同学)
如果想直接用Django的模型来操作数据(不用写原生SQL),可以这么做:
- 把你的Django项目里的
settings.py和对应app的models.py复制到其他电脑,或者用Git同步 - 修改
settings.py里的数据库配置,把NAME改成共享文件的路径:
# settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': r'\\YourPCName\DjangoDBFolder\db.sqlite3', # 或者挂载后的路径 } }
- 在Python脚本里初始化Django环境,就能用ORM操作了:
import os import django # 设置Django配置模块路径 os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings') django.setup() # 导入你的模型 from your_app.models import YourModel # 示例:查询数据 users = YourModel.objects.filter(age__gt=18) for user in users: print(user.name) # 示例:更新数据 user = YourModel.objects.get(id=1) user.age = 20 user.save()
必须注意的坑
- 并发写风险:SQLite对多设备同时写的支持很差,多个电脑同时更新数据可能会锁表甚至损坏数据库,如果是多用户高频写的场景,建议换成PostgreSQL或者MySQL
- 性能问题:通过网络共享文件访问SQLite的速度会比本地慢很多,大数据操作尤其明显
- 备份!备份!备份!:网络共享的文件容易因为断网、误操作出问题,一定要定期备份
db.sqlite3文件
内容的提问来源于stack exchange,提问作者Eva Zana
相关产品推荐
相关产品推荐

