gpt4 book ai didi

python - 使用 Flask-SQLAlchemy 连接到 MSSQL 数据库

转载 作者:太空狗 更新时间:2023-10-29 20:13:25 25 4
gpt4 key购买 nike

我正在尝试通过 Flask-SQLAlchemy 连接到本地 MSSQL 数据库。

这是我的 __init__.py 文件的代码摘录:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mssql+pyodbc://HARRISONS-THINK/LendApp'
db = SQLAlchemy(app)

SQLALCHEMY_TRACK_MODIFICATIONS = False

如您在 SQL Server Management Studio 中所见,此信息似乎匹配:

enter image description here

这是在我的 models.py 文件中创建的一个简单表格:

from LendApp import db

class Transaction(db.model):
transactionID = db.Column(db.Integer, primary_key=True)
amount = db.Column(db.Integer)
sender = db.Column(db.String(80))
receiver = db.Column(db.String(80))

def __repr__(self):
return 'Transaction ID: {}'.format(self.transactionID)

然后我通过执行以下两行在 Pycharm 中使用 Python 控制台连接到数据库:

>>> from LendApp import db
>>> db.create_all()

这会导致以下错误:

DBAPIError: (pyodbc.Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')

我唯一能想到的是我的数据库连接字符串不正确。我尝试将其更改为更多标准 Pyodbc 连接字符串并包括 driver={SQL SERVER} 但没有成功。

如果有人能帮助我解决这个问题,我们将不胜感激。

谢谢

最佳答案

所以我刚刚遇到了一个非常相似的问题,并且能够通过执行以下操作来解决。

SQL Alchemy documentation 之后我发现我可以像这样使用我的 pyodbc 连接字符串:

# 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

然后这导致了一个额外的错误,因为我也在使用 Flask-Migrate 并且显然它不喜欢连接 URI 中的 %。所以我做了更多的挖掘,发现了这个 post .然后我在我的 ./migrations/env.py 文件中更改了以下行

来自:

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

收件人:

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)

完成所有这些之后,我就可以进行迁移了,现在一切似乎都在正常工作。

关于python - 使用 Flask-SQLAlchemy 连接到 MSSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46739295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com