代码之家  ›  专栏  ›  技术社区  ›  Amrmsmb

如何使用flask从sqlalchamy检索行

  •  0
  • Amrmsmb  · 技术社区  · 5 年前

    我正在学习如何在flask中使用SQLalchemy和数据库。我遵循一个教程,它使用以下类和文件。

    https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database
    

    from app.models import User
    >>> u = User(username='susan', email='susan@example.com')
    >>> u
    <User susan>
    

    我的问题是无法显示相同的输出。我的意思是,当我编写语句时,我会出错

    来自应用程序。模型导入用户
    导入错误:没有名为app的模块。模型

    请告诉我如何调整发布的代码,以便我可以从数据库中检索数据

    :

    d:\xxx\xxx\db1\app\models
    d:\xxx\xxx\db1\__init__
    d:\xxx\xxx\db1\config
    

    ** 初始化 **:

    from flask import Flask
    from config import Config
    from flask_sqlalchemy import SQLAlchemy
    from flask_migrate import Migrate
    
    app = Flask(__name__)
    app.config.from_object(Config)
    db = SQLAlchemy(app)
    migrate = Migrate(app, db)
    
    from app import routes, models
    

    配置 :

    import os
    basedir = os.path.abspath(os.path.dirname(__file__))
    
    class Config(object):
    # ...
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    

    模型

    from app import db
    from app.models import User
    
    class User(db.Model):
        id = db.Column(db.Integer, primaty_key=True)
        username = db.Column(db.String(64), index=True, unique=True)
        email = db.Column(db.String(120), index=True, unique=True)
        password_hash = db.Column(db.String(128))
    
    def __repr__(self):
        return '<User {}>'.format(self.username)    
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   Jordan Kalebu    5 年前

    无法导入 在声明模型的同一个模块上,所以我不认为您是否需要模型中的第二行。py,试着评论一下,看看会发生什么

    from app import db
    from app.models import User ## I think the problems is 
    
    class User(db.Model):
        id = db.Column(db.Integer, primaty_key=True)
        username = db.Column(db.String(64), index=True, unique=True)
        email = db.Column(db.String(120), index=True, unique=True)
        password_hash = db.Column(db.String(128))
    
    def __repr__(self):
        return '<User {}>'.format(self.username)