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

PythonAnywhere拉取Git代码时避免数据库改动的方法咨询

解决PythonAnywhere拉取代码不改动数据库的方案

问题根源

拉取代码后数据库被清空,大概率是本地的SQLite数据库文件(db.sqlite3)被误推送到GitHub,拉取时直接覆盖了PythonAnywhere上的生产数据库;或是执行了重置类命令清空了数据。

具体解决方案

  • 排除数据库文件版本控制

    1. 在本地项目根目录的.gitignore文件中添加一行:db.sqlite3,确保本地数据库不会被纳入版本控制。
    2. 如果之前已经把数据库文件推送到GitHub,执行以下命令移除:
      git rm --cached db.sqlite3
      git commit -m "移除版本控制中的数据库文件"
      git push origin main
      

    这样后续拉取代码时,PythonAnywhere上的生产数据库不会被覆盖。

  • 拉取代码前先备份数据库
    在PythonAnywhere的控制台操作时,先备份当前生产数据库:

    cp db.sqlite3 db.sqlite3.backup
    

    拉取代码后如果数据库异常,直接用备份恢复:

    cp db.sqlite3.backup db.sqlite3
    
  • 规范数据库迁移流程
    本地修改模型后,仅推送迁移文件,不要推送数据库文件:

    1. 本地生成并执行迁移:
      python manage.py makemigrations
      python manage.py migrate
      
    2. 推送迁移文件到GitHub:
      git add .
      git commit -m "添加模型迁移文件"
      git push origin main
      
    3. 在PythonAnywhere上仅执行迁移命令,绝对不要用flush或reset_db这类清空数据的命令:
      python manage.py migrate
      
  • 长期优化:分离开发与生产数据库
    开发环境用本地SQLite,生产环境改用PythonAnywhere提供的MySQL或PostgreSQL(更稳定,避免文件覆盖风险)。通过settings.py区分配置:

    import os
    from pathlib import Path
    
    BASE_DIR = Path(__file__).resolve().parent.parent
    
    if os.environ.get('PRODUCTION'):
        # 生产环境数据库配置(以MySQL为例)
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': 'your_username$your_db_name',
                'USER': 'your_username',
                'PASSWORD': 'your_db_password',
                'HOST': 'your_username.mysql.pythonanywhere-services.com',
            }
        }
    else:
        # 开发环境SQLite
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.sqlite3',
                'NAME': BASE_DIR / 'db.sqlite3',
            }
        }
    

    在PythonAnywhere的环境变量中设置PRODUCTION=1即可启用生产配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:50:12