为什么每次部署后都会重置数据库?

时间:2019-07-28 23:36:58

标签: python amazon-web-services flask sqlalchemy amazon-elastic-beanstalk

我是刚部署到aws和烧瓶的新手。基本上,我有一个简单的Flask应用程序,但是每次我进行更改并将新代码部署到AWS Elastic beantalk时,数据库都会重置。

from dateutil import parser
from datetime import datetime
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from flask_cors import CORS
import os

application = app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'db.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
ma = Marshmallow(app)
cors = CORS(app)

@app.route('/')
def hello():
    return 'hello'

.
.
.


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    weight = db.Column(db.Float)
    workouts = db.relationship('Workout', backref='user', lazy=True)

    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

class UserSchema(ma.Schema):
    class Meta:
        fields = ('id', 'name', 'weight')

user_schema = UserSchema(strict=True)
users_schema = UserSchema(many=True, strict=True)
.
.
.


db.create_all()

if __name__ == '__main__':
    app.run(debug=True)

我希望每次我 eb deploy flask-env我的数据库不会被重置,但是会重置。例如,如果我创建一个用户,然后在代码中进行某些更改并部署,该用户就消失了。

1 个答案:

答案 0 :(得分:0)

您应该:

  1. 创建EBS卷
  2. 将数据库加载到该卷中
  3. 使用.ebextension将EBS卷附加到Beanstalk应用程序。一个示例可以是found here
综上所述,这不是一个高度可用的,结构良好的解决方案,并且会迅速恶化。

在将来出现问题之前,您将希望用RDS实例替换SQLite。