我是peewee的新手,正在尝试查询配置单元安装使用的MySQL元存储数据库。我可以列出所有可用的表,但无法查询特定的表“TBLS”。这是一个标准的metastore表,它只存储metastore中所有表的信息。在
这是我迄今为止的代码:from peewee import *
metastore_db = MySQLDatabase("metastore", host="localhost", port=3306, user="root", passwd="")
metastore_db.connect()
tables = metastore_db.get_tables()
for tbl in tables:
print tbl
现在要查询表,我写了:
^{pr2}$
现在我得到这个错误-
peewee.操作错误:(1054,“字段列表”中的“t1.id”列未知)
我遗漏了什么,还是因为中的表名是大写的?我需要提到模型中的所有列吗?在
这是TBLS表的结构-mysql> desc TBLS;
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| TBL_ID | bigint(20) | NO | PRI | NULL | |
| CREATE_TIME | int(11) | NO | | NULL | |
| DB_ID | bigint(20) | YES | MUL | NULL | |
| LAST_ACCESS_TIME | int(11) | NO | | NULL | |
| OWNER | varchar(767) | YES | | NULL | |
| RETENTION | int(11) | NO | | NULL | |
| SD_ID | bigint(20) | YES | MUL | NULL | |
| TBL_NAME | varchar(128) | YES | MUL | NULL | |
| TBL_TYPE | varchar(128) | YES | | NULL | |
| VIEW_EXPANDED_TEXT | mediumtext | YES | | NULL | |
| VIEW_ORIGINAL_TEXT | mediumtext | YES | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
谢谢你!在====================================================
EDIT: and UPDATE
====================================================
我可以通过添加类似这样的元信息来删除错误-class tbls(BaseModel):
tbl_id = PrimaryKeyField(db_column='TBL_ID')
create_time = IntegerField(db_column='CREATE_TIME')
db_id = IntegerField(db_column='DB_ID')
last_access_time = IntegerField(db_column='LAST_ACCESS_TIME')
owner = CharField(max_length=767,db_column='OWNER')
retention = IntegerField(db_column='RETENTION')
sd_id = IntegerField(db_column='SD_ID')
tbl_name = CharField(max_length=128,db_column='TBL_NAME')
tbl_type = CharField(max_length=128,db_column='TBL_TYPE')
class Meta:
db_table = 'TBLS'
tbl = tbls.select()
for t in tbl:
print t.owner,t.tbl_name
现在我可以检索所需的行。我的问题是,如果可能的话,如何在不必显式命名每个列的情况下获得表中的所有列(如select*)。在