App Engine上的Flask-SQLAlchemy使用

时间:2018-07-24 16:09:08

标签: python app-engine-flexible

作为一个整体,我对GCP还是很陌生,我需要为有客户的项目部署Flask应用。鉴于Google提供的所有文档,部署应用程序都非常简单,并且由于使用灵活的应用程序引擎似乎是最简单的方法,因此,这就是我要使用的方法。

我遇到的问题是尝试连接到Compute Engine上设置的MSSQL数据库。到目前为止,在Connect to MSSQL Database using Flask-SQLAlchemy的帮助下,我已经使用pyodbc在本地连接到数据库。

我确信正在运行gcloud app deploy不能正常工作,并且确信它无法安装pyodbc模块。我认为这绝对不是解决之道,并且基于this page of the docs,看来我应该能够通过其内部IP地址连接到计算引擎。

不过,我不知道该如何进行操作,因为文档中的所有内容都希望我使用Cloud SQL实例,但是鉴于此数据是由客户端提供的,并且我正在他们的GCP项目中工作,仅限于我上面描述的情况。

1 个答案:

答案 0 :(得分:1)

此后已解决。

问题在于服务器上没有下载ODBC驱动程序,因此我需要使用Dockerfile创建自定义运行时,以便首先安装驱动程序。

此解决方案极大地帮助了我的解决方案:Connect docker python to SQL server with pyodbc

步骤如下:

在烧瓶应用程序的目录中运行gcloud beta app gen-config --custom

在现在创建的Dockerfile内,在安装pip要求之前添加以下行。

#Install FreeTDS and dependencies for PyODBC
RUN apt-get update
RUN apt-get install -y tdsodbc unixodbc-dev
RUN apt install unixodbc-bin -y
RUN apt-get clean -y
ADD odbcinst.ini /etc/odbcinst.ini

odbcinst.ini文件应包含以下几行:

[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

之后,gcloud app deploy应该可以正常工作。