Tôi biết cách truy vấn trên mô hình ngay bây giờ. Giả sử có một mô hình Question
:Cách truy vấn bảng, trong sqlalchemy
class Question(Base):
__tablename__ = "questions"
id=Column(...)
user_id=Column(...)
...
Bây giờ, tôi có thể làm:
question = Session.query(Question).filter_by(user_id=123).one()
Nhưng, bây giờ, tôi có một bảng (không phải là một mô hình) questions
:
questions = Table('questions', Base.metadata,
Column(id, ...),
Column(user_id, ...),
....)
thế nào để truy vấn nó như những gì tôi làm với các mô hình?
Session.query(questions).filter_by(user_id=123).one()
này sẽ báo cáo một lỗi:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "E:\Python27\lib\site-packages\sqlalchemy-0.6.3-py2.7.egg\sqlalchemy\orm\query.py", line 851, in filter_by
for key, value in kwargs.iteritems()]
File "E:\Python27\lib\site-packages\sqlalchemy-0.6.3-py2.7.egg\sqlalchemy\orm\util.py", line 567, in _entity_descriptor
desc = entity.class_manager[key]
AttributeError: 'NoneType' object has no attribute 'class_manager'
Nhưng:
Session.query(questions).all()
là OK.
Có phải filter_by
chỉ hoạt động đối với các kiểu máy không? Làm thế nào tôi có thể truy vấn trên bảng?
Có tài liệu nào để truy vấn qua bảng không? – JRodDynamite
Chọn được hiển thị trực tiếp trên Bảng; đã cho tôi một chút để tìm ra: [Table.select] (http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Table.select) – chris