Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Połącz się z bazą danych MSSQL za pomocą Flask-SQLAlchemy

Miałem więc bardzo podobny problem i mogłem go rozwiązać, wykonując następujące czynności.

Postępując zgodnie z dokumentacją SQL Alchemy odkryłem, że mogę użyć mojego ciągu połączenia pyodbc w następujący sposób:

# 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

To spowodowało dodatkowy błąd, ponieważ używałem również Flask-Migrate i najwyraźniej nie podoba mu się % w identyfikatorze URI połączenia. Więc zrobiłem trochę więcej kopania i znalazłem ten post. Następnie zmieniłem następujący wiersz w moim ./migrations/env.py plik

Od:

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

Do:

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)

Po zrobieniu tego wszystkiego udało mi się przeprowadzić migracje i wszystko wygląda tak, jakby teraz działało poprawnie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Standardowe ciągi formatu daty/godziny obsługiwane przez FORMAT() w SQL Server

  2. Oblicz skrót MD5 ciągu UTF8

  3. Nieskończona pętla CTE z OPCJA (maksymalna rekurencja 0)

  4. Ograniczenie sprawdzania nakładania się zakresu dat

  5. Jak sprawić, by rozszerzenie SQLSRV działało z PHP, skoro MSSQL jest przestarzały?