Dus*_*ram 3 python flask python-3.x google-cloud-platform google-cloud-functions
如何flask-sqlalchemy
与 Google Cloud Functions 和 Cloud SQL 等功能集成?
看一下最小的应用程序示例,它包装了app
变量:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return '<User %r>' % self.username
Run Code Online (Sandbox Code Playgroud)
但我的 Google Cloud Function 无法访问任何名为的内容app
:
def my_function(request):
return "Hello world!"
Run Code Online (Sandbox Code Playgroud)
创建我自己的应用程序app = Flask(__name__)
不起作用,因为 Cloud Functions 不使用此应用程序来返回响应。
你可以用flask.current_app
它代替。您还必须配置flask-sqlalchemy
为使用 CloudSQL 提供的 Unix Domain Socket:
from flask import current_app as app
from flask_sqlalchemy import SQLAlchemy
# Set these in the environment variables for the function
db_user = os.environ.get('CLOUD_SQL_USERNAME')
db_password = os.environ.get('CLOUD_SQL_PASSWORD')
db_name = os.environ.get('CLOUD_SQL_DATABASE_NAME')
db_connection_name = os.environ.get('CLOUD_SQL_CONNECTION_NAME')
# This is for Postgres, it's similar for MySQL
app.config['SQLALCHEMY_DATABASE_URI'] = f'postgresql://{db_user}:{db_password}@/{db_name}?host=/cloudsql/{db_connection_name}'
# This must be set, determine which is best for you
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
...
Run Code Online (Sandbox Code Playgroud)
User
然后您可以在函数中查询模型:
def my_function(request):
user = User.query.first()
return f"Hello {user.username)!"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2215 次 |
最近记录: |