Mac OSX 10.13.6(17G65)
AWS RDS MSSQL实例
Select @@VERSION;
Microsoft SQL Server 2017
python3 -V
Python 3.7.0
pip3 show Flask-SQLAlchemy
名称:Flask-SQLAlchemy V:2.3.2
pip3 show Flask-Migrate
名称: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'))
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?
我可以使用模板和python文件直接连接,例如Connect to MSSQL Database using Flask-SQLAlchemy和even using pyodbc
that I created.
但是当我使用env变量时,出现了以下错误:
我很困惑...
答案 0 :(得分:2)
好吧,我能够使用DSN进行连接,这是一种有趣的研究方法...
$ 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文件。
[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
重要提示:请确保您检查驱动程序的路径是否存在!
。
注意:是的,我知道驱动程序有两个位置,第一个是符号链接,另一个是实际位置。它仍然适用于列出的一个或两个。只是出于好奇。
[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的连接,将是
DATABASE_URL='mssql+pyodbc://JayRizzo:SpaceInvaderPassword!@MY_Custom_DSN_NAME'
注意:考虑到链接,它应该如下所示:
odbcinst.ini
将驱动程序提供给>odbc.ini
将DSN名称提供给>.env
[MY_Custom_DSN_NAME]
或
相反的
Env
文件引用odbc
,并且它为驱动程序引用odbcinst
。您想怎么想。
My_installed_ODBC_driver和MY_Custom_DSN_NAME可以是您想要的任何名称。只需确保它们正确匹配即可(这是我的问题的一部分,最初是尝试使用DSN。)
我无法使用直接连接网址。
到目前为止,我只能使用DSN进行连接。
现在我可以使用SQLAlchemy flask db upgrade
和flask db migrate
任何见识都会很好。
希望您能够遵循我的逻辑。