Почему peewee включает столбец id в запрос выбора mysql?
Я пытаюсь научиться использовать peewee с mysql.
У меня есть существующая база данных на сервере MySQL с существующей таблицей. В настоящее время таблица пуста (сейчас я только тестирую).
>>> db = MySQLDatabase('nhl', user='root', passwd='blahblah')
>>> db.connect()
>>> class schedule(Model):
... date = DateField()
... team = CharField()
... class Meta:
... database = db
>>> test = schedule.select()
>>> test
SELECT t1.`id`, t1.`date`, t1.`team` FROM `nhl` AS t1 []
>>> test.get()
Я получаю следующую ошибку:
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.6/site-packages/peewee.py", line 1408, in get
return clone.execute().next()
File "/usr/lib/python2.6/site-packages/peewee.py", line 1437, in execute
self._qr = QueryResultWrapper(self.model_class, self._execute(), query_meta)
File "/usr/lib/python2.6/site-packages/peewee.py", line 1232, in _execute
return self.database.execute_sql(sql, params, self.require_commit)
File "/usr/lib/python2.6/site-packages/peewee.py", line 1602, in execute_sql
res = cursor.execute(sql, params or ())
File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 201, in execute
self.errorhandler(self, exc, value)
File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1054, "Unknown column 't1.id' in 'field list'")
Почему peewee добавляет 'Я бы' столбец в запросе выбора? У меня нет столбца идентификатора в таблице, которая уже существует в базе данных. Я просто хочу работать с существующей таблицей и не зависеть от необходимости создавать ее каждый раз, когда я хочу взаимодействовать с базой данных. Вот где я считаю, что ошибка.
Результат запроса должен быть пустым, поскольку таблица пуста, но, поскольку я учусь, я просто хотел опробовать код. Я ценю вашу помощь.
РЕДАКТИРОВАТЬ
Основываясь на полезных ответах Вубла и Фрэнсиса, я задаюсь вопросом, имеет ли смысл для меня использовать peewee или другой ORM, такой как sqlalchemy. Каковы преимущества использования ORM вместо простого выполнения прямых запросов в python с использованием MySQLdb?
Это то, что я ожидаю сделать:
-автоматическая загрузка данных с различных веб-серверов. Большая часть данных представлена в формате xls или csv. Я могу конвертировать xls в csv, используя пакет xlrd.
-разбор / обработка данных в объектах списка перед вставкой / массовой вставкой в таблицу базы данных mysql.
- запуск сложных запросов для экспорта данных из mysql в python в соответствующие структурированные данные (например, списки) для различных статистических вычислений, которые легче сделать в python вместо mysql. Все, что можно сделать в MySQL, будет сделано там, но я могу запустить сложные регрессии в Python.
- запускать различные графические пакеты с данными, полученными из запросов. Некоторые из них могут включать использование пакета ggplot2 (из R-проекта), который представляет собой расширенный графический пакет. Поэтому я буду привлекать некоторую интеграцию с R / Python.
Учитывая вышесказанное - лучше ли тратить часы на хакерство, изучая ORM / Peewee / SQLAlchemy или придерживаясь прямых запросов mysql с использованием MySQLdb?