sql >> Database teknologi >  >> RDS >> Sqlserver

Opret forbindelse til MSSQL-databasen ved hjælp af Flask-SQLAlchemy

Så jeg havde lige et meget lignende problem og var i stand til at løse ved at gøre følgende.

Efter SQL Alchemy-dokumentationen fandt jeg ud af, at jeg kunne bruge min pyodbc-forbindelsesstrengen sådan her:

# 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

Dette forårsagede så en yderligere fejl, fordi jeg også brugte Flask-Migrate og tilsyneladende kan den ikke lide % i forbindelses-URI'en. Så jeg gravede lidt mere og fandt dette indlæg. Jeg ændrede derefter følgende linje i min ./migrations/env.py fil

Fra:

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

Til:

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 at have gjort alt dette var jeg i stand til at udføre mine migreringer, og alt ser ud som om det fungerer korrekt nu.



  1. GREATEST() Funktion i PostgreSQL

  2. Slet dublerede rækker (slet ikke alle dubletter)

  3. programmæssig kontrol af åben forbindelse i JDBC

  4. TABLOCK vs TABLOCKX