這裏有兩個簡單的選項。
最簡單的是,只是指類的屬性!
Base = declarative_base()
class MyTable(Base):
__tablename__ = 'mt'
id = Column('someone_put_a_strange_for_id', Integer, primary_key=True)
bar = Column(Integer)
fk = ForeignKeyConstraint(['bar'], [MyTable.id])
這實際上不是Column
對象,但在幾乎所有情況下,SQLAlchemy的會看看這個對象稱爲__clause_element__()
一個特殊的屬性,這將拉出實際Column
。在現代的SQLAlchemy版本中,這應該可以在任何地方工作,如果有某個地方不起作用,則發佈錯誤報告。
另一種是把一個。關鍵在列:
class MyTable(Base):
id = Column('someone_put_a_strange_for_id', Integer, key='id')
以上,該列現在table.c.id在所有的Python的情況下,「名」是僅在SQL側。所以如果你直接和table.c打交道,那你就去。
還有更多選擇!這是你的類映射器也有自己的.c
屬性,你可以得到這樣的看法也:
from sqlalchemy import inspect
Base = declarative_base()
class MyTable(Base):
__tablename__ = 'mt'
id = Column('someone_put_a_strange_for_id', Integer, primary_key=True)
inspect(MyTable).c.id
爲什麼不直接使用參考模型(而不是列):'ForeignKey的(MyTable.id)' ? – van
我試過了,它不起作用。因爲屬性名稱與表格字段名稱不同。 – davidshen84
奇怪的是,這是Mike在答案中提到的第一個簡單選項,它對我來說一直很有用。希望Mike的答案中列出的其他選項將幫助你。 – van