【问题标题】:How to do a select query using flask and sqlalchemy?如何使用烧瓶和 sqlalchemy 进行选择查询?
【发布时间】:2017-02-14 11:35:35
【问题描述】:

我是使用flask和SQLAlchemy的新手,我在postgress中有一个数据库,这个数据库有表“数据”200条记录,我想做一个Select语句但是当我这样做时总是给我同样的错误,这是我的代码:

这是我的model.py

from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Data(Base):
    __tablename__ = 'data'
    ids = Column(Integer(), primary_key=True)
    customer_id = Column(String())
    inventory_id = Column(String())
    device_id = Column(String())

    def toJSON(self):       
        json = {
            "ids":self.ids,
            "customer_id":self.customer_id,
            "inventory_id":self.inventory_id,
            "device_id":self.device_id,     
        }

        return json

这是我的烧瓶应用程序:

from flask_sqlalchemy import SQLAlchemy
from flask import Flask, render_template, request
from flask_cors import CORS, cross_origin
from model import Data, Base

app = Flask(__name__)
CORS(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@localhost/mydatabase'
db = SQLAlchemy(app)
data = []

def index():
    test_data()
    return render_template("index.html",result = data)

def test_data():
    sss = Base.Data.query.filter_by(ids=5).first()
    print sss

app.add_url_rule('/', 'index', index)

if __name__ == '__main__':
    app.run(debug = True, threaded=True)

这不起作用,总是有同样的错误:

AttributeError: type object 'Base' 没有属性 'psirt_alerts_view'

我怎样才能简单地选择?

更新:

[2017-02-14 12:02:29,980] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\flask\app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "c:\python27\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "c:\python27\lib\site-packages\flask_cors\extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "c:\python27\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "c:\python27\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "c:\python27\lib\site-packages\flask\app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "S:\ibm\ib.py", line 15, in index
    test_data()
  File "S:\ibm\ib.py", line 40, in test_data
    sss = Base.data.query.filter_by(ids=5).first()
AttributeError: type object 'Base' has no attribute 'data'

【问题讨论】:

  • 请将完整的错误回溯添加到您的问题中!
  • 如果您可以使用 flask_sqlalchemy 创建您的 Data 模型,您可以使用 Data.query
  • Data 应该是大写而不是Base.data,这是你的班级名称
  • @Arman 不适用于大写
  • 如果你直接导入了Data 为什么要使用Base.data

标签: python postgresql flask flask-sqlalchemy


【解决方案1】:

db 实例具有会话对象,因此您可以像这样进行查询:

db.session.query(Data).filter_by(ids=5).first()

【讨论】:

  • 很高兴听到这个消息 ;)
  • 这行代码在实际的烧瓶应用程序中去哪里了?在modelsview 代码中?
  • 这是一个查询,你可以在任何你喜欢的地方使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
相关资源
最近更新 更多