sql >> Databasteknik >  >> RDS >> Sqlserver

Anslut till MSSQL-databasen med Flask-SQLAlchemy

Så jag hade precis ett mycket liknande problem och kunde lösa genom att göra följande.

Efter SQL Alchemy-dokumentationen hittade jag att jag kunde använda min pyodbc-anslutningssträngen så här:

# 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

Detta orsakade sedan ett ytterligare fel eftersom jag också använde Flask-Migrate och uppenbarligen gillar den inte % i anslutnings-URI. Så jag grävde lite mer och hittade det här inlägget. Jag ändrade sedan följande rad i min ./migrations/env.py fil

Från:

from flask import current_app
config.set_main_option('sqlalchemy.url',
                   current_app.config.get('SQLALCHEMY_DATABASE_URI'))

Till:

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)

Efter att ha gjort allt detta kunde jag göra mina migreringar och allt verkar som om det fungerar korrekt nu.



  1. Datahantering med Python, SQLite och SQLAlchemy

  2. SECOND() Exempel – MySQL

  3. Få en lista över tidszoner som stöds i SQL Server (T-SQL)

  4. En guide till MySQL Galera Cluster Streaming Replication:Del ett