You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyGithub上传SQLite3非UTF-8文件到GitHub报错如何解决

问题修复方案

结论

完全可以像上传PNG等二进制文件一样上传SQLite数据库文件,仅需调整文件读取逻辑和适配PyGithub的接口规则即可。

错误根因

原代码使用r(文本只读模式)打开二进制的.db文件,Python会默认以UTF-8编码解码文件内容,而SQLite属于二进制文件,包含大量非UTF-8格式的字节内容,因此触发UnicodeDecodeError编码错误。

修复步骤

  • 把文件读取模式从r调整为rb(二进制只读模式),直接读取原始二进制字节,不需要经过编码解码流程
  • 注意区分文件状态:仓库中已存在server.db时调用update_file接口更新,仓库中没有该文件时需要调用create_file接口首次创建

修复后代码

场景1:更新仓库中已存在的server.db

import github
# 二进制模式读取本地db文件
with open('server.db', 'rb') as file:
    content = file.read()
g = github.Github('你的GitHub访问令牌')
repo = g.get_user().get_repo("my-repo")
# 获取仓库中已有文件的sha值
file = repo.get_contents("server.db")
# 直接传入二进制content即可,PyGithub会自动处理
repo.update_file("server.db", "Python上传SQLite数据库", content, file.sha, branch="main")

场景2:首次上传新的server.db到仓库

import github
with open('server.db', 'rb') as file:
    content = file.read()
g = github.Github('你的GitHub访问令牌')
repo = g.get_user().get_repo("my-repo")
# 首次创建文件不需要传入sha参数
repo.create_file("server.db", "Python首次上传SQLite数据库", content, branch="main")

注意事项

GitHub普通文件上传单文件大小限制为100MB,如果你的server.db文件超过该大小,会上传失败,建议使用Git LFS存储大体积的二进制文件。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:06:03