LINUX.ORG.RU

python, postgreSQL, psycopg2...как работать с БД?


0

0

пытаюсь работать с БД (postgres). в шелле пишу
import psycopg2
conn=psycopg2.connect ("dbname='obd' user='postgres' host='localhost') #да, такая вот тестовая БД, без пароля
cur=conn.cursor ()
curr.execute ("""SELECT KD,NM from COATO""")
получаю отношение coato не существует
(в постгре есть база obd, схема obd, в ней таблица COATO - имено большими буквами)
вопрос - что я делаю не так?

conn.stat()
есть или что-то типа того
может надо хоть и без пароля добавлять passwd="", а зачем перед dbname ковычка?

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Кавычка - забыл закрывающую поставить, ибо не копипастил. Что с (пустым) паролем, что без:

conn.status () возвращает TypeError: 'int' object is not callable

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от gibbon

cur.execute ("""SELECT KD,NM from "COATO" """) получаю current transaction is aborted

Меня ещё беспокоит, а откель psycopg2 и python знают, в какой схеме искать? ведь указывается только имя БД, а имя схемы - нигде не указывается...

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от anonymous4

psycopg2 - вроде как развитие psycopg

набрал psql -d odb -U postgres далее в консоли БД уже SELECT KD, NM from COATO

отношение 'coato' не существует

если в кавычках "COATO", то и в ошибке - тоже "COATO" не существует.

Через pgadmin3 всё видно...

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

Оказывается, запрос должен выглядить так SELECT "KD", "NM" from odb."COATO" где - odb - отношение/схема/relation

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

>psycopg2 - вроде как развитие psycopg

Да я знаю, что такое psycopg2, я обратил внимание на кавычку непонятную. Кстати, в топикстарте еще опечатка в имени переменной cur/curr. Перенабирал код, вместо того, чтоб скопипастить? :)

anonymous4
()

урра! всё заработало.

Вообще, надо было подружить джангу и эту бд в postgres

решение для интересующихся:

при описании модели таблицы имя класса можно давать произвольное, потом в class Meta : db_name='"схема"."имя_таблицы"'

Unnamed_Hero ★★★
() автор топика
Ответ на: комментарий от Unnamed_Hero

эм, это написано в первых страницах мануала постгреса :). Либо dbname указывешь со схемой(тогда libpq сам всё сделает), либо указываешь порядок поиска в схемах(вроде, можно было даже несколько схем указать).

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.