gpt4 book ai didi

sql-server - 如何让 SQLAlchemy 使用配置文件将 MSSQL 连接到 AWS?

转载 作者:行者123 更新时间:2023-12-03 17:14:14 34 4
gpt4 key购买 nike

版本

Mac OSX 10.13.6 (17G65)

AWS RDS MSSQL Instance Select @@VERSION; Microsoft SQL Server 2017

python3 -V Python 3.7.0

pip3 show Flask-SQLAlchemy Name: Flask-SQLAlchemy V: 2.3.2

pip3 show Flask-Migrate Name: Flask-Migrate V: 2.2.1



配置文件
class Config(object):
"""Docstring for Config Class."""

SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
SQLALCHEMY_DATABASE_URI = (os.environ.get('DATABASE_URL'))

.env
SECRET_KEY=SuperDuperSecretPassKey
DATABASE_URL='mssql+pyodbc://DRIVER={ODBC Driver 17 for SQL Server};SERVER=My-custom-route.a0aaa0000aaaa.us-east-1.rds.amazonaws.com;DATABASE=Databasetoconnectto;UID=JayRizzo;PWD=SuperAwesomePassword!!!'

问题:

如何在我的配置中正确设置 SQLAlchemy URL?
  • 编码或解码的 URL?
  • 我可以使用 URL 字符串吗?
  • 必须是DSN吗?

  • 笔记:

    我可以直接使用模板和 python 文件进行连接,例如 Connect to MSSQL Database using Flask-SQLAlchemyeven using pyodbc that I created.

    但是当我使用 env 变量时,我得到的错误包括:
  • 值必须是字符串配置
  • 无法从字符串 '%s' 解析 rfc1738 URL"% name
  • sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('IM012', '[IM012] [unixODBC][Driver Manager]DRIVER 关键字语法错误 (0) (SQLDriverConnect)') (此错误的背景:http://sqlalche.me/e/dbapi)
  • sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found and no default driver specified (0) (SQLDriverConnect)') (此错误的背景在:http://sqlalche.me/e/rvf5)

  • 我被难住了……

    最佳答案

  • 我可以使用 URL 字符串吗?
  • 并不是说我能做到这么远。
  • 编码或解码的 URL?
  • 到目前为止,我都无法工作 even if you double encode the URL .
  • 必须是DSN吗?
  • 是的,到目前为止,这是有效的。

  • 使用 DSN

    好吧,我能够使用 DSN 进行连接,这是一项有趣的研究……
  • 检查您的 odbcinst 驱动程序和配置

  • $ odbcinst -j 

    unixODBC 2.3.7
    DRIVERS............: /usr/local/etc/odbcinst.ini
    SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
    FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
    USER DATA SOURCES..: /Users/jkirchoff/.odbc.ini
    SQLULEN Size.......: 8
    SQLLEN Size........: 8
    SQLSETPOSIROW Size.: 8

    然后查看、自定义、验证您的 odbcinst.ini 和 odbc.ini 文件。

    /usr/local/etc/odbcinst.ini

    [My_installed_ODBC_driver]
    Description=Microsoft ODBC Driver 17 for SQL Server
    Driver=/usr/local/lib/libmsodbcsql.17.dylib
    Driver=/usr/local/Cellar/msodbcsql17/17.2.0.1/lib/libmsodbcsql.17.dylib
    UsageCount=1

    Important: Please make sure that you check that the paths exist for your drivers!



    .

    注意:是的,我知道有两个驱动程序位置,第一个是符号链接(symbolic link),另一个是实际位置。它仍然适用于列出的一个或两个。它只是为了好奇。

    /usr/local/etc/odbc.ini

    [MY_Custom_DSN_NAME]
    Driver = My_installed_ODBC_driver
    Description = My Connection to AWS
    Database = MyDatabaseNameHERE
    Server = My-custom-route.a0aaa0000aaaa.us-east-1.rds.amazonaws.com
    Readonly = No
    Port = 1433
    Trace = No

    确保匹配驱动程序的命名约定 My_installed_ODBC_driver是我的例子。

    然后将您的 .env 文件设置为包含与 DSN_name 的连接,如上所示

    [你的 flask 项目的根目录]/.env

    DATABASE_URL='mssql+pyodbc://JayRizzo:SpaceInvaderPassword!@MY_Custom_DSN_NAME'

    Note: Thinking about the Linkup, it should be as follows odbcinst.ini supplies driver to > odbc.ini supplies DSN name to > .env[MY_Custom_DSN_NAME]



    或者

    the opposite Env file references odbc and it references the odbcinst for the driver. how ever you want to think about it.



    最后

    My_installed_ODBC_driver & MY_Custom_DSN_NAME 可以是您想要的任何名称。只需确保它们正确匹配,(这是我的问题的一部分,最初是尝试使用 DSN。)

    我无法使用直接连接网址。

    到目前为止,我只能使用 DSN 进行连接。

    现在我可以使用 SQLAlchemy flask db upgrade & flask db migrate
    任何见解都会很好。

    希望你能按照我的逻辑。

    链接

    SQLAlchemy can't connect to an mssql database

    关于sql-server - 如何让 SQLAlchemy 使用配置文件将 MSSQL 连接到 AWS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51927157/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com