How can I select only one column using SQLAlchemy?

I want to select (and return) one field only from my database with a "where" clause. The code:

from sqlalchemy.orm import load_only
    @application.route("/user", methods=['GET', 'POST'])
    def user():
        user_id = session.query(User, User.validation==request.cookies.get("validation")).options(load_only("id"))
        session.commit()
        return user_id

This fails and trace:

File "/Library/Python/2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Python/2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Python/2.7/site-packages/flask/app.py", line 1478, in full_dispatch_request
response = self.make_response(rv)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1577, in make_response
rv = self.response_class.force_type(rv, request.environ)
File "/Library/Python/2.7/site-packages/werkzeug/wrappers.py", line 841, in force_type
response = BaseResponse(*_run_wsgi_app(response, environ))
File "/Library/Python/2.7/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app
return _run_wsgi_app(*args)
File "/Library/Python/2.7/site-packages/werkzeug/test.py", line 867, in run_wsgi_app
app_rv = app(environ, start_response)
TypeError: 'Query' object is not callable

How can I select and return only the id column? I also tried several other ways, but also with an error. Is load_only correct?

+10
source share
4 answers

An object takes entities for a query as positional arguments, so just pass it : QueryUser.id

user_id = session.query(User.id).\
        filter(User.validation == request.cookies.get("validation")).\
        scalar()

scalar()returns the first element of the first result or None if no rows are found. This throws a MultipleResultsFound exception for multiple rows.

load_only() , , , , . User, . :

user = session.query(User).\
        filter(User.validation == request.cookies.get("validation")).\
        options(load_only("id")).\
        one()

one() (0 1 ). None " ", one_or_none().

, , WHERE, Query , filter().

, Flask , :

  • (response, status, headers)
  • WSGI

, , , WSGI. Query - scalar() - , WSGI.

+26

- :

session.query(Table.col1).filter(User.name=='Name')
+2

, flask-sqlalchemy, , , , sqlalchemy , , , .

:

class User(...):
    id = db.Column(db.Integer, primary_key=True)
    ...

:

user_ids = session.query(User.id)
all_ids = user_ids.all()

.

+1

db. @application.route( "/user", methods = ['GET', 'POST']) user_id, . Flask - .

+1
source

All Articles