代码之家  ›  专栏  ›  技术社区  ›  Brooks Lybrand

flask sqlachemy on app engine使用连接到云计算引擎上的mssql数据库

  •  0
  • Brooks Lybrand  · 技术社区  · 6 年前

    作为一个整体,我对GCP非常陌生,我需要为一个有客户机的项目部署一个flask应用程序。考虑到谷歌提供的所有文档,部署一个应用程序已经足够简单了,而且由于使用灵活的应用程序引擎似乎是最简单的方法,所以这正是我想要使用的。

    不过,我遇到的问题是试图连接到在计算引擎上设置的MSSQL数据库。到目前为止,我已经使用 pyodbc 在一些帮助下 Connect to MSSQL Database using Flask-SQLAlchemy .

    我肯定在跑步 gcloud app deploy 不会工作,而且确实无法安装 脓毒症 模块。我想无论如何这不会是一条路,而且基于 this page of the docs ,似乎我应该能够通过其内部IP地址连接到计算引擎。

    不过,我不知道如何从这里开始,因为文档中的所有内容都希望我使用一个云SQL实例,但是考虑到这些数据是由客户机提供的,并且我正在处理他们的gcp项目,我有点局限于上面描述的场景。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Brooks Lybrand    6 年前

    这已经解决了。

    问题是服务器上没有下载任何ODBC驱动程序,所以我需要创建一个带有dockerfile的自定义运行时,以便首先安装驱动程序。

    我的解决方案得到了这个解决方案的极大帮助: Connect docker python to SQL server with pyodbc

    步骤如下:

    gcloud beta app gen-config --custom 在Flask应用程序的目录中。

    在现在创建的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 应该工作得很好。