【问题标题】:unable to connect to mysql server using flask and pyodbc无法使用flask和pyodbc连接到mysql服务器
【发布时间】:2021-11-19 22:09:26
【问题描述】:

我使用下面的代码通过flask和pyodbc包连接到MYSQL DATABASE。当我尝试运行一个烧瓶项目时。

app.py

from dotenv import load_dotenv
from flask_migrate import Migrate
from flask_cors import CORS
from api import create_app, init_db
from api.common.models.models import db
import os


load_dotenv()
app_name = os.environ.get('FLASK_APP') or ''
app = create_app()

# security
cors_allowed_origins = os.environ.get('CORS_ALLOWED_ORIGINS', [])
CORS(app) # , origins=cors_allowed_origins

# sqlalchemy
app.config['SQLALCHEMY_DATABASE_URI'] = "mssql+pyodbc://USERNAME:PASSWORD@./DBNAME?driver=ODBC+Driver+17+for+SQL+Server"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = FALSE
db = init_db(app)
migrate = Migrate(app, db)

@app.route('/')
def home():
    str = 'Hello World {0}'.format(app_name)
    return str

if __name__=='__main__':
    app.run()

我收到以下错误:

sqlalchemy.exc.OperationalError: (pyodbc.OperationalError) ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')

【问题讨论】:

    标签: python mysql sqlalchemy pyodbc


    【解决方案1】:

    您的问题在于连接字符串,您正在尝试连接到 MySql 但连接字符串是连接到 MSSQL:

    "mssql+pyodbc://USERNAME:PASSWORD@./DBNAME?driver=ODBC+Driver+17+for+SQL+Server"
    

    但对于 MYSQL 是以下之一:

    # default
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://scott:tiger@localhost/foo'
    
    # mysqlclient (a maintained fork of MySQL-Python)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://scott:tiger@localhost/foo'
    
    # PyMySQL
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://scott:tiger@localhost/foo'
    

    查看官方文档:

    Database Urls

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2014-07-05
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多