Предполагая, что вы хотите, чтобы они были равномерно распределены, и предполагая, что вы не хотите повторений
addends = []
picks = range(1, 34)
while sum(addends) != 40:
addends = random.sample(picks, 3)
if sum(addends) > 39:
continue
addends.append(40 - sum(addends))
Из того, что я читал, эта ошибка означает, что Вы не ссылаетесь на имя таблицы правильно. Одна общая причина состоит в том, что таблица определяется с написанием смешанного случая, и Вы пытаетесь запросить ее со всем нижним регистром.
Другими словами, следующие сбои:
CREATE TABLE "SF_Bands" ( ... );
SELECT * FROM sf_bands; -- ERROR!
Используйте двойные кавычки для разграничивания идентификаторов, таким образом, можно использовать определенный смешанный случай, записывающий, поскольку таблица определяется.
SELECT * FROM "SF_Bands";
Ре Ваш комментарий, можно добавить схему к "search_path" так, чтобы при ссылке на имя таблицы, не квалифицируя его схему запрос соответствовал тому имени таблицы проверенным каждая схема в порядке. Точно так же, как PATH
в оболочке или include_path
в PHP, и т.д. Можно проверить текущий путь поиска схемы:
SHOW search_path
"$user",public
Можно изменить путь поиска схемы:
SET search_path TO showfinder,public;
См. также http://www.postgresql.org/docs/8.3/static/ddl-schemas.html