Vì vậy, tôi vừa gặp một vấn đề tương tự và có thể giải quyết bằng cách làm như sau.
Theo tài liệu SQL Alchemy, tôi thấy mình có thể sử dụng chuỗi kết nối pyodbc của mình như sau:
# 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
Điều này sau đó gây ra một lỗi bổ sung vì tôi cũng đang sử dụng Flask-Migrate và có vẻ như nó không thích% trong URI kết nối. Vì vậy, tôi đã thực hiện một số đào sâu hơn và tìm thấy bài đăng này. Sau đó, tôi đã thay đổi dòng sau trong ./migrations/env.py
của mình tệp
Từ:
from flask import current_app
config.set_main_option('sqlalchemy.url',
current_app.config.get('SQLALCHEMY_DATABASE_URI'))
Tới:
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)
Sau khi thực hiện tất cả những điều này, tôi đã có thể thực hiện việc di chuyển của mình và mọi thứ dường như đang hoạt động bình thường.