使用Flask-SQLAlchemy连接到google cloud SQL错误



我完全是使用flask和Google Cloud SQL的初学者。我想让登录和注册在我的应用程序使用Flask-Login和Flask-SQLAlchemy。但是我不能连接到谷歌云SQL使用Flask-SQLAlchemy,这是我的代码。

SQLALCHEMY_DATABASE_URI = (
'mysql+pymysql://{db_user}:{db_password}@/{db_name}'
'?unix_socket=/cloudsql/{connection_name}').format(
user=db_user, password=db_password,
database=db_name, connection_name=connection_name)
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI

我刚刚得到这个错误:(2003, " cannot connect to MySQL server on 'localhost' ([Errno 2] No such file or directory)")

但是,当我尝试使用SQLAlchemy与以下代码建立连接时,连接成功了:

query_string = dict({"unix_socket": "/cloudsql/{}".format(connection_name)})
driver_name = 'mysql+pymysql'
db = sqlalchemy.create_engine(
sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name, 
query=query_string),
pool_size=5,
max_overflow=2,
pool_timeout=30,
pool_recycle=1800)

但是当我试图像这样修改代码时:

app.config['SQLALCHEMY_DATABASE_URI'] = db

然后,我得到这个错误:'引擎'对象没有属性'驱动名'。

对于这个问题有什么建议吗?有什么建议,可能对我很有帮助,谢谢。

这一行实际上分配了"引擎"对象到您的URI配置:

app.config['SQLALCHEMY_DATABASE_URI'] = db

你可以使用url对象来创建一个URI:

uri = sqlalchemy.engine.url.URL(
drivername=driver_name,
username=db_user,
password=db_password,
database=db_name, 
query=query_string)
app.config['SQLALCHEMY_DATABASE_URI'] = uri.render_as_string(hide_password=false)

您可以将该URI与您创建的URI进行比较,并查看它们的不同之处。很可能是输入错误,或者某些值转义不正确。

相关内容

  • 没有找到相关文章

最新更新