2014-06-04 6 views
5

Ich versuche, zwei Tabellen in peewee mit einer MySQL-Datenbank zu verbinden. Das ist ziemlich einfach, so etwas wie dies zu tun:Vermeidung von kollidierenden Spaltentiteln in der Tabelle beitreten in peewee

s = Table1.select(Table1, Table2).join(
     Table2).naive().where(Table1.Title == "whatever") 

Leider habe ich eine Spalte in Tabelle 1 und Tabelle 2 die gleiche Sache, „URL“ genannt. Dann, wenn ich am URL wähle gibt es mir die URL aus Table2, die ich nicht will, ich möchte die aus Table1. Gibt es eine Möglichkeit, entweder der Tabelle "Table2.URL" nicht beizutreten oder etwas anderes zu benennen? This question scheint ein ähnliches Problem in regulären SQL (nicht peewee) zu adressieren, gibt es eine Möglichkeit, etwas ähnliches in peewee zu tun?

Mit anderen Worten, ich glaube, ich suche entweder eine "JOIN AS" Methode oder eine "DON'T JOIN THIS COLUMN" Methode in peewee.

Vielen Dank, Alex

Antwort

6

Ich habe peewee nicht verwendet, aber die docs deuten darauf hin, dass jede Tabelle, einen Ausdruck oder Spalte eine .alias() Methode hat. Aber das bedeutet, dass Sie individuell die URL-Spalte alias müss:

Table1.select(Table1, Table2.URL.alias('t2_url')).join(Table2)... 

Auch in handgearbeiteten SQL können Sie nicht SELECT Table2.* aber gleichzeitig einen Alias ​​für eine der Spalten der Tabelle 2 geben.

+0

Vielen Dank! Das scheint zu funktionieren. –

Verwandte Themen