Cloud SQL Python连接器可以与SQLAlchemy一起使用吗



因此,我一直在尝试使用flask、sqlalchemy和Cloud SQL部署应用程序引擎标准应用程序。当我发现在应用程序引擎实例上部署时,使用此处和此处描述的技术连接根本不起作用时,我相信我已经完成了所有的编码,并准备好进行部署。因此,在询问了一些事情之后,我相信我已经能够使用最新发布的Cloud SQL Python连接器在我的应用程序和Cloud SQL服务器中的SQL实例之间建立连接,但我不知道如何在SQLAlchemy库中进一步使用该连接。

例如,请参阅我的(相关(代码:

config.py

"""Flask configuration."""
from os import environ, path
from dotenv import load_dotenv
from google.cloud.sql.connector import connector
basedir = path.abspath(path.dirname(__file__))
load_dotenv(path.join(basedir, '.env'))
DB_USERNAME = environ.get('DB_USERNAME')
DB_PASSWORD = environ.get('DB_PASSWORD')
DB_ADDRESS = environ.get('DB_ADDRESS')
DB_PORT = environ.get('DB_PORT')
DB_NAME = environ.get('DB_NAME')
DB_CONNECTION_STRING = environ.get('DB_CONNECTION_STRING')

class Config:
"""Base config."""
SECRET_KEY = environ.get('SECRET_KEY')
STATIC_FOLDER = 'static'
TEMPLATES_FOLDER = 'templates'
SQLALCHEMY_TRACK_MODIFICATIONS = True
connector.connect(
DB_CONNECTION_STRING, 
"pymysql",
user=DB_USERNAME,
password=DB_PASSWORD,
db=DB_NAME
)   

main.py

from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
import random
import string
import datetime
import json
import re
from config import MAPBOX_TOKEN
#Create App
def create_app():
app = Flask(__name__)
app.config.from_object('config.DevConfig')
return app
app = create_app()
db = SQLAlchemy(app)
# User ORM for SQLAlchemy
class Users(db.Model):
id = db.Column(db.Integer, primary_key = True, nullable = False)
ptoken = db.Column(db.String(255), nullable = False, unique = True)
geodict = db.Column(db.Text, nullable = False)

虽然谷歌的connector.connect功能正常,但当运行上面的代码时,我会收到以下警告:

..envlibsite-packagesflask_sqlalchemy__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".

为了解决这个问题,我尝试了一些愚蠢的事情,比如:

class Config:
"""Base config."""
SECRET_KEY = environ.get('SECRET_KEY')
STATIC_FOLDER = 'static'
TEMPLATES_FOLDER = 'templates'
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_DATABASE_URI = connector.connect(
DB_CONNECTION_STRING, 
"pymysql",
user=DB_USERNAME,
password=DB_PASSWORD,
db=DB_NAME
)

但这显然不起作用,我只是在网上找不到任何有用的信息。

所以我的问题是:Cloud SQL Python连接器可以与SQLAlchemy一起使用吗?我如何才能实现我想要做的事情?

因此,首先,从应用程序引擎连接到云SQL运行良好。文档中有一整页的内容。

其次,连接器可以作为该方法的替代品使用。下面是一个与SQL Alchemy一起使用的示例。

最新更新