LINUX.ORG.RU

Python и Postgresql


0

0

Здравствуйте.Я новичок в использование UNIX систем , но задача стоит написать серверное приложение поиска по базе данных PostgreSQL.База данных создана ( по крайней мере pgadmin так выводит) модуль psycopg2 установлен.Пытаюсь подключится к базе данных вот таким вот образом conn=psycopg2.connect(«dbname='mydb' user='root' host='localhost' password='123456'»);но не выходит.Подскажите пожалуйста в чем могут быть подводные камни?

Попробуй psql запустить с теми же параметрами.

kot_otbelivatel
()

> новичок в использование

-_-

Sphinx ★★☆☆
()

conn=psycopg2.connect(«dbname='mydb' user='root' host='localhost' password='123456'»)

надо исправить на

conn=psycopg2.connect(dbname='mydb' user='root' host='localhost' password='123456')

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

Что-то ты совсем не то говоришь. Там аргументом служит строка в формате DSN. А у тебя и не dsn и не именованные аргументы которые разделяются запятыми.

Топикстартеру: мы сами должны угадать ошибку которая возникает?

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

Вот именно что сам не знаю что там возникает.Использую вот такой вот скрипт try: conn=psycopg2.connect(«dbname='mydb' user='root' host='localhost' password='123456'»); except: print «I am unable to connect to the database» И как понимаете вылазит вторая строчка.

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

напиши в консоли ipython
(надо сначала поставить)
потом
import psycopg2
потом свою строку
conn=psycopg2.connect("dbname='mydb' user='root' host='localhost' password='123456'")

потом читаешь ошибки

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

Выдало ошибку FATAL: отсутствует запись в pg_hba.conf для хоста "::1", пользователя «root» , базы «mydb», SSL выкл. Пожалуйста подскажите куда добавить эту запись.

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

Йооо... Во всех мануалах написано что нельзя так делать. Сам по примерам что-ли питон учил?

1) ловить все эксепшены одним эксептом это значит на любой баг(хоть syntax error) налетать и потом на форуме писать «помогите, питон глючит».

2) У эксепшена есть параметры(аргументы) в которых написано что не так.

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

это не весь трейс, никакой информационной нагрузки этот кусок не несёт.

Сначала научись консольным клиентом(psql) цепляться в базу, потом уже с теми же параметрами через питон.

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

По умолчанию имя пользователя базы данных, используемое psql — это логин пользователя, который запускает процесс psql. Также по умолчанию psql соединяется не с localhost, а через юниксовый сокет (потому и не спрашивает никаких паролей).

Так что у тебя как минимум соединение не с тем адресом происходит. Убедись, что у тебя разрешены подключения с локального адреса. В pg_hba.conf это что-то вроде

host all all 127.0.0.1/32 trust

Только имей в виду, что trust = без запроса пароля. В общем, читай маны, они рулез.

linuxfan
()
Ответ на: комментарий от Immortal

Хм к меня как бы получилось подконектится через такай запрос в консоли: conn=psycopg2.connect(«dbname='mydb' user='root' host='127.0.0.1' password='123456'»); но в скрипте все равно не выходит

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

Рекомендую вдумчиво почитать доку к PostgreSQL на офсайте, особенно если до этого работал с чем-то наподобие MySQL.

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

Даже и не знаю что уже сделать.Если вводить команды с консоли то я могу работать с базами, а если записать их в скрипт то увы ничего не получается.У кого то есть какие то мысли?

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

Вроде бы выловил ошибку. В переводе.Доступ отклонен.Запущен ли сервер на хосте «127.0.0.1» и принимает TCP/IP запросы по порту 5432. Но pgadmin3 говорит что сервер запушен как раз на этом хосте и порт 5432.В чем может быть проблема?

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

попробуй дописать в ph_hba.conf что то вроде\

host all all 0.0.0.0/0 md5

chicane
()
Ответ на: комментарий от true_admin

<class 'psycopg2.OperationalError'>: could not connect to server :Permission denied Is the server running on host «127.0.0.1» and accepting TCP/IP connections on port 5432?

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

fedora 11 #!/bin/env python import cgi import cgitb import re import psycopg2 import os cgitb.enable() print «Content-type: text\html»

print pattern_1=re.compile(r"^[a-z]+$«) pattern_2=re.compile(r»^\d+$«) theform=cgi.FieldStorage() if theform.has_key('name'):       if pattern_1.match(theform['name'].value):          print theform['name'].value

if theform.has_key('id'):       if pattern_2.match(theform['id'].value):          print theform['id'].value

try:    os.listdir('/etc')       conn=psycopg2.connect(„dbname='mydb' user='root' host='127.0.0.1' password='123456'“);    print „At last“ except(OSError,IOError):    print „I am unable to connect to the db“

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

Т.е. из консоли «psql -U root -h 127.0.0.1 mydb» сначала просит пароль а потом пускает в базу?

По моим представлениям, если у тебя прописано «host all all 127.0.0.1/32 trust», то пароль просить не должно. Если так то выкинь пароль из dsn.

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

Оно подсоединилось таким запросом через скрипт conn=psycopg2.connect(«dbname='mydb' user='root' password='123456'»);

Но почему host не надо? Спасибо всем огромное кто отвечал.

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

потому что через сокет лезло. Но это значит что и руками из консоли питона не работало, а ты сказал что работало. Вот всё это время ушло на то чтобы понять где ты нас дезинформировал.

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