Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 炼金术;谷歌应用程序引擎-没有写入权限_Python_Google App Engine_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 炼金术;谷歌应用程序引擎-没有写入权限

Python 炼金术;谷歌应用程序引擎-没有写入权限,python,google-app-engine,flask,sqlalchemy,flask-sqlalchemy,Python,Google App Engine,Flask,Sqlalchemy,Flask Sqlalchemy,Main.py from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SECRET_KEY'] = '123' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) class

Main.py

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SECRET_KEY'] = '123'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)


class User(db.Model):
    __table_name__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    password = db.Column(db.String(80))

    def __init__(self, username, password):
        self.username = username
        self.password = password

@app.route('/register/', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        """Check username is available"""
        data = User.query.filter_by(username=username).first()
        if data is None:
            new_user = User(username=username, password=password)
            db.session.add(new_user)
            db.session.commit()
            return redirect(url_for('login'))
        return render_template('register2.html')
    return render_template('register1.html')
我通过Google app Engine部署了我的web应用程序,但当我尝试注册时,我发现Google app Engine上当前存在操作错误

OperationalError:(sqlite3.OperationalError)尝试写入只读数据库

谷歌应用引擎存储中的文件似乎是只读的


有没有办法在GAE中写入.db文件?

App Engine不支持写入本地文件,这主要是因为App Engine通过创建多个并行实例来扩展应用的方式。如果情况并非如此,并且您一直在写入每个本地文件系统中的文件,则会生成不一致,这不是您想要的

对于App Engine,您最好使用以下设置:

  • 对于DB存储:使用基于云的数据库,在您的情况下,我相信您可以使用CloudSQL,但您可以找到Google Cloud为数据库提供的产品,以检查哪些应用程序更适合您

  • 对于文件存储:使用云文件存储系统。谷歌云为此提供了云存储产品,您可以查看更多详细信息


    • App Engine不支持写入本地文件,这主要是因为App Engine通过创建多个并行实例来扩展应用程序。如果情况并非如此,并且您一直在写入每个本地文件系统中的文件,则会生成不一致,这不是您想要的

      对于App Engine,您最好使用以下设置:

      • 对于DB存储:使用基于云的数据库,在您的情况下,我相信您可以使用CloudSQL,但您可以找到Google Cloud为数据库提供的产品,以检查哪些应用程序更适合您

      • 对于文件存储:使用云文件存储系统。谷歌云为此提供了云存储产品,您可以查看更多详细信息