2014-12-30 4 views
7

Ho visto un numero di riferimenti nello SQLAlchemy Documentation all'attributo .c. (vedere gli esempi seguenti). Dove la documentazione di SQLAlchemy descrive questo attributo .c.? (Ad esempio, su quali oggetti è questo attributo disponibile?)Dove si trova la documentazione SQLAlchemy per ".c." attributo per l'accesso alle colonne per nome nella query o nella tabella?

riferimenti Esempio:

  • "Users of the expression system know thatSelect.apply_labels() antepone il nome della tabella per ogni nome di colonna, che colpisce i nomi che sono disponibili da Select.c"
  • " The columns on the statement are accessible attraverso un attributo chiamato 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 in termini di Table oggetti, cioè address.c.id sopra per il rapporto Address, e non Address.id, come Address non può ancora essere collegato ad metadati della tabella, né possiamo specificare una stringa qui. "
  • "When mapping to an existing table, l'oggetto Colonna può essere referenziato direttamente:"
    class User(Base):
    __table__ = user_table
    id = user_table.c.user_id
    name = user_table.c.user_name
  • Here is the Postgresql WITH RECURSIVE esempio. Si noti che, in questo esempio, il included_parts cte e l'alias incl_alias sono selettori di base, il che significa che le colonne sono accessibili tramite l'attributo .c..
+0

Non posso credere che questo commento non sia già qui, ma: "Rifiuterei questo codice dalla revisione del codice per l'uso abissamente povero dei nomi delle variabili!" – lol

risposta

3

c è un alias per attributo columns, ed è disponibile ad oggetti di Select Expressions, Tables, Table Expressions and From Clause Expressions e possibilmente altre classi pure.

c o columns è una raccolta di tutte le colonne disponibili. Un esempio di c attribute described in the docs:

c
ereditato dall'attributo c di FromClause
un alias per l'attributo columns.

La ricerca segue nella documentazione sqlalchemy rivela tutte le classi che hanno c o columns come attributo, tra cui alcuni che in precedenza era a conoscenza di:

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

Quello che ho trovato davvero cool era che è possibile attivare oggetto TextClause normale in oggetto TextAsFrom

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

+0

Grazie a @Haleemur_Ali, è utile! Sarei ancora interessato a vedere una documentazione specifica che cita '.c' come alias per' .columns' –

+1

In tutti i punti in cui '.columns' si trova nella documentazione, se si scorre leggermente verso l'alto dovresti vedere che 'c' è documentato come * Un alias per l'attributo colonne. *. Ad esempio, segui questo link http://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html?highlight=.columns#sqlalchemy.schema.Table.c –

+0

Scatto! Grazie @Haleemur_Ali! –

Problemi correlati