Connect to MSSQL Database using Flask-SQLAlchemy

前端 未结 6 527
天涯浪人
天涯浪人 2020-12-09 05:02

I\'m trying to connect to a local MSSQL DB through Flask-SQLAlchemy.

Here\'s a code excerpt from my __init__.py file:

from flask import          


        
相关标签:
6条回答
  • 2020-12-09 05:21

    I just changed my connection string something like this and its worked perfectly

    NOTE: you need to install pyodbc to work....

    app.config["SQLALCHEMY_DATABASE_URI"] = "mssql+pyodbc://user:pwd@server/database?driver=SQL+Server"
    
    0 讨论(0)
  • 2020-12-09 05:23

    I believe your connection string is missing the authentication details. From Flask-SQLAlchemy documentation, the connection string should have the following format

    dialect+driver://username:password@host:port/database
    

    From your example, I believe it will look something like this

    app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://<username>:<password>@<Host>:<Port>/LendApp'
    
    0 讨论(0)
  • 2020-12-09 05:24

    So I just had a very similar problem and was able to solve by doing the following.

    Following the SQL Alchemy documentation I found I could use the my pyodbc connection string like this:

    # 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
    

    This then caused an additional error because I was also using Flask-Migrate and apparently it doesn't like % in the connection URI. So I did some more digging and found this post. I then changed the following line in my ./migrations/env.py file

    From:

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

    To:

    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)
    

    After doing all this I was able to do my migrations and everything seems as if it is working correctly now.

    0 讨论(0)
  • 2020-12-09 05:24

    I had the same problem, it was resolved by specifying:

    app = Flask(__name__)
    app.config["SQLALCHEMY_DATABASE_URI"] = "mssql+pyodbc://MySQLServerName/MyTestDb?driver=SQL+Server?trusted_connection=yes"
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    db.init_app(app)
    
    0 讨论(0)
  • 2020-12-09 05:24

    using below solution i get resolve my connection issue with MSSQL server

    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
    

    If you are getting any Login failed for User error then please go to this http://itproguru.com/expert/2014/09/how-to-fix-login-failed-for-user-microsoft-sql-server-error-18456-step-by-step-add-sql-administrator-to-sql-management-studio/.

    0 讨论(0)
  • 2020-12-09 05:26

    If someone still stumbled upon this issue and trying to figure out another solution then try with pymssql instead of pyodbc;

    pip install pymssql

    Connection URI would be:

    conn_uri = "mssql+pymssql://<username>:<password>@<servername>/<dbname>"

    0 讨论(0)
提交回复
热议问题