【问题标题】:Flask-SQLAlchemy (mssql+pyodbc) and Existing Models with BlueprintFlask-SQLAlchemy (mssql+pyodbc) 和带有蓝图的现有模型
【发布时间】:2017-12-04 15:24:47
【问题描述】:

我在 python3.6 环境中有以下 Flask 应用程序/文件夹结构:

site/
   __init__.py
   models.py
   static/
   templates/
     dashboard/
       index.html
     login/
       index.html
   views/
     __init__.py
     login.py
config.py
run.py

我的文件如下所示:

运行.py

from site import app
app.run()

config.py

class BaseConfig(object):
  DEBUG = False
  TESTING = False
  WFT_CSRF_ENABLED = True

class DevConfig(BaseConfig):
  DEBUG = True
  SECRET_KEY = 'dev'
  SQLALCHEMY_DATABASE_URI = 'DRIVER={ODBC Driver 11 for SQL Server};SERVER=myServer;DATABASE=myDB;TRUSTED_CONNECTION=yes'
  SQLALCHEMY_TRACK_MODIFICATIONS = False

site/init.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('config.DevConfig')
db = SQLAlchemy(app)

from site.views import login
app.register_blueprint(login.mod)

site/views/login.py

from flask import Blueprint, render_template

mod = Blueprint('login', __name__)

@mod.route('/')
def index():
  return render_template('login/index.html')

网站/models.py

class User(db.Model):
    __table__ = db.Model.metadata.tables['users']

    def __repr__(self):
        return '<User %r>' % self.username

我要做的是连接并使用我的 ms-sql 数据库中称为用户的现有模型。

我对 Flask、Flask-SQLAlchemy、Blueprint 和 Python 还是很陌生,我一直不知道如何在我的 login.py 中使用 db.Model。如何在蓝图范式中实现这一点?

任何帮助和指导将不胜感激,并感谢您的帮助!

问候, 真希

【问题讨论】:

    标签: sql-server flask flask-sqlalchemy pyodbc


    【解决方案1】:

    您可以在 login.py 中添加以下行:

    from site import db
    from site.models import User
    

    要向数据库添加新用户,您可以使用:

    new_user = User()
    db.session.add(new_user)
    db.session.commit()
    

    并将其添加到您的用户表中:

    _tablename__ = 'user'
    

    您需要按照flask_sqlalchemy doc 中建议的语法更改配置中的数据库 URI

    用这个替换你所拥有的:

    SQLALCHEMY_DATABASE_URI : mysql://username:password@server_adress/db_name
    

    对于用户认证我可以建议你flask_login

    【讨论】:

    • 你好@Espoir,感谢您的快速回复,但我从顶部添加两行代码时遇到了一些错误。 TypeError: 'immutabledict' object is not callable
    • 文件“run.py”,第 3 行,在 中 from mis_site import app 文件“...\site_init_.py”,第 29 行,在 from mis_site.views import login File "C:\Users\mark.manalo\dev\python36\mis_site\mis_site\views\login.py",第 5 行,在 from mis_site.models import User File"。 ..\site\models.py",第 5 行,在 类用户(db.Model)中:文件“...\site\models.py”,第 6 行,在用户 table = db.Model.metadata.tables('users') TypeError: 'immutabledict' object is not callable
    • 这是正确的吗? SQLALCHEMY_DATABASE_URI = 'DRIVER={ODBC Driver 11 for SQL Server};SERVER=myServer;DATABASE=myDB;TRUSTED_CONNECTION=yes'
    • 检查我已经编辑了我的答案,为了帮助您解决您遇到的错误,请在此处找到更多关于 uRI flask-sqlalchemy.pocoo.org/2.3/config
    • 你好@Espoir!如何更改我的 DATABASE_URI 以适应 mssql+pyodc?谢谢
    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多