peewee 未在 select 语句中使用动态 table 名称
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 为您的 table 取了别名。如果您阅读了完整的查询:
SELECT "t1"."id", "t1"."FieldA", "t1"."FieldB"
FROM "mydynamictable" AS t1
"mydynamictable" AS t1 部分将 table 名称别名为 "t1",以使查询更紧凑。当您有联接并需要消除同名列的歧义时,这一点尤其重要。
为什么这里的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 为您的 table 取了别名。如果您阅读了完整的查询:
SELECT "t1"."id", "t1"."FieldA", "t1"."FieldB"
FROM "mydynamictable" AS t1
"mydynamictable" AS t1 部分将 table 名称别名为 "t1",以使查询更紧凑。当您有联接并需要消除同名列的歧义时,这一点尤其重要。