Jadi saya hanya memiliki masalah yang sangat mirip dan dapat menyelesaikannya dengan melakukan hal berikut.
Mengikuti dokumentasi SQL Alchemy, saya menemukan bahwa saya dapat menggunakan string koneksi pyodbc saya seperti ini:
# Python 2.x
import urllib
params = urllib.quote_plus("DRIVER={SQL Server Native Client 10.0};SERVER=dagger;DATABASE=test;UID=user;PWD=password")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
# Python 3.x
import urllib
params = urllib.parse.quote_plus("DRIVER={SQL Server Native Client 10.0};SERVER=dagger;DATABASE=test;UID=user;PWD=password")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
# using the above logic I just did the following
params = urllib.parse.quote_plus('DRIVER={SQL Server};SERVER=HARRISONS-THINK;DATABASE=LendApp;Trusted_Connection=yes;')
app.config['SQLALCHEMY_DATABASE_URI'] = "mssql+pyodbc:///?odbc_connect=%s" % params
Ini kemudian menyebabkan kesalahan tambahan karena saya juga menggunakan Flask-Migrate dan ternyata tidak suka % di URI koneksi. Jadi saya melakukan penggalian lagi dan menemukan posting ini. Saya kemudian mengubah baris berikut di ./migrations/env.py
. saya berkas
Dari:
from flask import current_app
config.set_main_option('sqlalchemy.url',
current_app.config.get('SQLALCHEMY_DATABASE_URI'))
Kepada:
from flask import current_app
db_url_escaped = current_app.config.get('SQLALCHEMY_DATABASE_URI').replace('%', '%%')
config.set_main_option('sqlalchemy.url', db_url_escaped)
Setelah melakukan semua ini, saya dapat melakukan migrasi dan semuanya tampak berfungsi dengan benar sekarang.