【问题标题】:(Python) Connecting mssql database using SQLalchemy and using it(Python) 使用 SQLalchemy 连接 mssql 数据库并使用它
【发布时间】:2022-09-23 02:31:57
【问题描述】:

我有一个 Python webapp,它使用 SQLalchemy 迁移连接到 SQL Server 数据库。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
import urllib

SQLALCHEMY_TRACK_MODIFICATIONS = False

app = Flask(__name__)
app.config[\'SECRET_KEY\'] = \'*******************\'

params = urllib.parse.quote_plus(\'DRIVER={SQL Server};SERVER=SOMESERVER;DATABASE=PD;Trusted_Connection=yes;\')
app.config[\'SQLALCHEMY_DATABASE_URI\'] = \"mssql+pyodbc:///?odbc_connect=%s\" % params
db = SQLAlchemy(app)

现在数据库有一些带有一些值的表,我有一个注册页面和一个应该使用它的登录页面。 但我只知道我可以使用对表格进行建模的 model.py 文件,这样我就可以像这样使用它们:


class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default=\'default.jpg\')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship(\'Post\', backref=\'author\', lazy=True)

    def __repr__(self):
        return f\"User(\'{self.username}\', \'{self.email}\', \'{self.image_file}\')\"

当我运行这些文件时,webapp 正常启动,但是当我输入一个表单(登录或注册)时,我得到了这个错误,我想这表明在数据库中找不到表 \"User\"。

sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) (\'IM002\', \'[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)\') (此错误的背景:https://sqlalche.me/e/14/rvf5)

那么我是否应该将类名从 User 更改为我在数据库中的表名,然后使用我在 DB 中的名称来命名所有字段?或者是否有其他方法可以调用我在 DB 中的表并让它填充“User”类(隐喻),以便在导入 User 时使用我的 DB 表?

  • 问题是数据库uri。不幸的是,我无法访问 MSSQL,所以我不能确切地说出它有什么问题。

标签: python sql-server sqlalchemy flask-sqlalchemy sqlalchemy-migrate


【解决方案1】:
class User(db.Model, UserMixin):
     __table__ = Table('table_name_here')
     # rest of your definition

应该给你排序。


编辑: URL 应该是这样的:

app.config['SQLALCHEMY_DATABASE_URI'] = "mssql+pyodbc://daneil@server/database?driver=ODBC+Driver+17+for+SQL+Serve"

【讨论】:

    猜你喜欢
    • 2018-03-26
    • 2019-10-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多