2014-12-30 10 views
7

Tôi đã nhìn thấy một số tham chiếu trong số SQLAlchemy Documentation đến thuộc tính .c. (xem ví dụ sau). Tài liệu SQLAlchemy mô tả thuộc tính .c. này ở đâu? (Ví dụ, vào những gì đối tượng là thuộc tính này có sẵn?)Tài liệu SQLAlchemy ở đâu cho ".c." thuộc tính để truy cập các cột theo tên trong truy vấn hoặc bảng?

Ví dụ tham khảo:

  • "Users of the expression system know thatSelect.apply_labels() prepends tên bảng mỗi tên cột, ảnh hưởng đến tên mà có sẵn từ Select.c"
  • " The columns on the statement are accessible thông qua một thuộc tính gọi là c:
    >>> for u, count in session.query(User, stmt.c.address_count).\
    ... outerjoin(stmt, User.id==stmt.c.user_id).order_by(User.id):
    ... print u, count
  • mapper(User, user, properties={
    ’addresses’ : relationship(Address, backref=’user’, order_by=address.c.id)
    }) # reference
  • "SQL expressions are typically specified trong điều khoản của Table đối tượng, tức là address.c.id trên cho mối quan hệ Address, và không Address.id, như Address có thể chưa được liên kết với bảng siêu dữ liệu, cũng không chúng ta có thể chỉ định một chuỗi ở đây không. "
  • "When mapping to an existing table, đối tượng Cột có thể được tham chiếu trực tiếp:"
    class User(Base):
    __table__ = user_table
    id = user_table.c.user_id
    name = user_table.c.user_name
  • Here is the Postgresql WITH RECURSIVE ví dụ. Lưu ý rằng, trong ví dụ này, included_parts cte và bí danh incl_alias của nó là các lựa chọn lõi, có nghĩa là các cột được truy cập thông qua thuộc tính .c..
+0

Tôi không thể tin rằng bình luận này không có ở đây rồi, nhưng: "Tôi sẽ từ chối mã này từ việc xem xét mã cho việc sử dụng tên biến không hợp lệ." – lol

Trả lời

3

c là bí danh cho thuộc tính columns và có sẵn cho các đối tượng Select Expressions, Tables, Table Expressions and From Clause Expressions và có thể là các lớp khác.

c hoặc columns là tập hợp tất cả các cột có sẵn. Một ví dụ về c attribute described in the docs:

c
thừa hưởng từ các thuộc tính c FromClause
một bí danh cho các thuộc tính columns.

Việc tìm kiếm sau trong tài liệu SQLAlchemy tiết lộ tất cả các lớp có c hoặc columns như một thuộc tính, trong đó có một vài mà tôi trước đây không biết gì về:

http://docs.sqlalchemy.org/en/rel_0_9/search.html?q=.columns&check_keywords=yes&area=default#

Những gì tôi thấy thực sự mát mẻ là bạn có thể biến đối tượng TextClause thuần túy thành đối tượng TextAsFrom

http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html?highlight=.columns#sqlalchemy.sql.expression.TextClause.columns

+0

Cảm ơn @Haleemur_Ali, điều đó rất hữu ích! Tôi vẫn muốn thấy tài liệu cụ thể đề cập đến '.c' là bí danh cho' .columns' –

+1

Trong tất cả các vị trí tìm thấy '.columns' trong tài liệu, nếu bạn cuộn nhẹ lên đầu bạn sẽ thấy rằng 'c' được ghi thành * Bí danh cho thuộc tính cột. *. Ví dụ: vui lòng theo liên kết này http://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html?highlight=.columns#sqlalchemy.schema.Table.c –

+0

OK! Cảm ơn @Haleemur_Ali! –

Các vấn đề liên quan