簡體   English   中英

peewee在select語句中未使用動態表名

[英]peewee not using dynamic table name in select statement

為什么此處的select語句具有t1而不是MyDynamicTable

from peewee import *

database = SqliteDatabase(None)


class Base(Model):
    class Meta:
        database = database


class MyTable(Base):
    FieldA = TextField()
    FieldB = TextField()


mytable = type('MyDynamicTable', (MyTable,), {})

database.init('test.db')

mytable.select()

導致:

>>> mytable.select()
<class 'peewee.MyDynamicTable'> SELECT "t1"."id", "t1"."FieldA", "t1"."FieldB" FROM "mydynamictable" AS t1 []

但是這個名字是正確的:

>>> mytable
<class 'peewee.MyDynamicTable'>
>>> mytable._meta.db_table
'mydynamictable'

Peewee為您的表名加上了別名。 如果您閱讀完整的查詢:

SELECT "t1"."id", "t1"."FieldA", "t1"."FieldB"
FROM "mydynamictable" AS t1

“ mydynamictable” AS t1部分將表名別名為“ t1”,以使查詢更緊湊。 當您有聯接並且需要消除具有相同名稱的列的歧義時,這一點尤其重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM