python sqlalchemy распечатать все строки таблицы - PullRequest
0 голосов
/ 09 октября 2019

Как мне распечатать все строки в моей таблице?

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

engine = create_engine('sqlite:///test2.db', echo=True)
Session = sessionmaker(bind=engine)
Base = declarative_base()

class Nutritional_Values(Base):
    __tablename__ = 'nutritional_values'
    id = Column(Integer, primary_key=True)
    item = Column(String)
    var1 = Column(FLOAT)
    var2 = Column(FLOAT)
    var3 = Column(FLOAT)

    def __repr__(self):
        return "<Nutrional Value(item='%s', var1='%s', var2='%s' var3='%s')>" % (
                             self.item, self.var1, self.var2, self.var3)

Base.metadata.create_all(engine)

s = Session()
objects = [
    Nutritional_Values(item="item1", var1=3, var2=4, var3=2),
    Nutritional_Values(item="item2", var1=4, var2=2, var3=8)
]
s.bulk_save_objects(objects)
s.commit()

Я пробовал код, но получаю сообщение об ошибке

for nutritional_value in s.query([Nutritional_Values]).all():
     print(nutritional_value)

    Traceback (most recent call last):
  File "sqlite_sqlalchemy.py", line 33, in <module>
    for nutritional_value in s.query([Nutritional_Values]).all():
  File "/Users/benjamattesjaroen/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 1544, in query
    return self._query_cls(entities, self, **kwargs)
  File "/Users/benjamattesjaroen/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 168, in __init__
    self._set_entities(entities)
  File "/Users/benjamattesjaroen/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 198, in _set_entities
    entity_wrapper(self, ent)
  File "/Users/benjamattesjaroen/anaconda3/lib/python3.7/site-packages/sqlalchemy/orm/query.py", line 4474, in __init__
    "expected - got '%r'" % (column,)
sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped entity expected - got '[<class '__main__.Nutritional_Values'>]'

1 Ответ

2 голосов
/ 09 октября 2019

Избавьтесь от [] в for nutritional_value in s.query([Nutritional_Values]).all():.

Метод query предполагает распаковку аргументов вместо Query, для которого требуется сеансбыть переданным. Похоже, это удобный метод.

Например:

q = Query([User, Address], session=some_session)

Вышеуказанное соответствует:

q = some_session.query(User, Address)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...