psycopg2 i PostgreSQL

0

cześć!
jestem tutaj nowy ale mam problem bo od niedawna bawię się Pythonem i utknąłem na używaniu biblioteki psycopg2 która ma umożliwiać korzystanie z PostreSQL:
na początku importuje się tą bibliotekę i wykonują się kolejne linie (w drugiej wywala błąd):
*
import psycopg2 as ps
connection=ps.connect("dbname=kurs_pythona, user=admin, password=xxxx")
kursor=connection.cursor()
kursor.execute("CREATE TABLE edziekanat (id serial PRIMARY KEY, imie varchar, nazwisko varchar, status varchar, login varchar, haslo varchar)")
connection.commit()
kursor.close()
connection.close()*

skrypt nie wykonuje się ale pojawia się błąd z linią polecenia zawierającą parametr connection=ps.connect()
próbowałem wielu rodzajów sposobów zapisu tego zadania ale nie działa żaden...

jeśli ktoś się zna na temat używania tej biblioteki to proszę o kontakt
pozdrawiam serdecznie

0

jaki błąd?

0

w python interperterze wyświetla na czerwono:

Traceback (most recent call last):
File "<string>", line 426, in run_nodebug
File "C:\Users\Daniel\Desktop\python projekt 2018\createSQL.py", line 19, in <module>
connection=psycopg2.connect("dbname=kurs_pythona, user=admin, password=xxxx")
File "C:\Python33\lib\site-packages\psycopg2_init_.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError

0

bazę masz lokalnie na porcie 5432? Działa baza?

0

tak baza działa!

na pgadmin3 wyświetla się normalnie
dodałem tam pustą bazę danych o nazwie:
kurs_pythona i w schematach /public jest pusta,
za pomocą funkcji z pythona chciałem ją wypełnić.

trochę się pogubiłem z tym Pythonem,
korzystałem z kursu z heliona:
Python. Kurs video. Poziom pierwszy. Podstawy, Joanny Zatorskiej

i nie wiem co z tym błędem na forum Polsko języcznym nie znalazłem solucji. pozdrawiam

0

Wpisz bez przecinków:

connection=psycopg2.connect("dbname=kurs_pythona user=admin password=xxxx")

```albo:

connection=psycopg2.connect(dbname="kurs_pythona", user="admin", password="xxxx")

Docs:
http://initd.org/psycopg/docs/module.html
0

Wpisz bez przecinków:

connection=psycopg2.connect("dbname=kurs_pythona user=admin password=xxxx")

albo:

connection=psycopg2.connect(dbname="kurs_pythona", user="admin", password="xxxx")

Docs:
http://initd.org/psycopg/docs/module.html

0

próbowałem na różne sposoby używać tej składni, między innymi w ten sposób co pisałeś i cały czas wyskakuje:

psycopg2.OperationalError

niektóre warianty z tą składnią były takie:
#connection=psycopg2.connect("dbname=kurs_pythona user=admin password=admin host=127.0.0.1 port=5432")
#connection=psycopg2.connect("host=localhost, dbname=kurs_pythona, user=admin, password=admin, port=5432")
#connection=ps.connect(host="localhost", dbname="kurs_pythona", user="admin", password="admin" )
#connection=ps.connect(host='localhost', dbname='kurs_pythona', user='admin', password='admin')
#connection=psycopg2.connect(database="kurs_pythona", user="admin", password="admin")
connection=ps.connect("host=localhost dbname=kurs_pythona user=admin password=admin port=5432")

wydaje mi się, że błąd jest w samej bibliotece, możliwe że sama zawiera błąd ...
pozdrawiam!

0

wg http://initd.org/psycopg/docs/module.html

exception psycopg2.OperationalError
Exception raised for errors that are related to the database’s operation and not necessarily under the control of the programmer, e.g. an unexpected disconnect occurs, the data source name is not found, a transaction could not be processed, a memory allocation error occurred during processing, etc.

Czyli generalnie może być wszystko od kota stojącego na obudowie po wybuch bomby w Mozambiku :/

BTW po psycopg2.OperationalError nie masz nic więcej? Bo najważniejsze z tego błędu jest właśnie to czego nie ma :)

BTW2 taki connection powinien zadziałać na 100% psycopg2.connect("dbname=your_database user=postgres password=xxxx host=127.0.0.1 port=5432"), oczywiście z Twoimi danymi

0

cały kod błędu to:

Traceback (most recent call last):
File "<string>", line 426, in run_nodebug
File "C:\Users\Daniel\Desktop\python projekt 2018\createSQL.py", line 19, in <module>
connection=ps.connect("host=localhost dbname=kurs_pythona user=admin password=admin port=5432")
File "C:\Python33\lib\site-packages\psycopg2_init_.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError

wydaje mi się, że to nie zadziała, więc instaluje linuxa na virtual boxie zobaczyć rozwiązanie na linuxie, na windzie ten błąd chyba nie ma solucji
pozdrawiam serdecznie!

0

a masz w zmiennej PATH ścieżkę do bibliotek klienta postgresa?

0

chyba nie mam,, zresztą nie wiem.
chodzi coś o zmienne środowiskowe? muszę zobaczyć
mam windows 10 jak coś ale nie pamiętam jak to się ustalało

0

dokładnie - chodzi o zmienne środowiskowe. Jeśli nie ma to albo dodaj tam ścieżkę do plików klienta, albo przegraj je do katalogu z pythonem. Pliki klienta to:
intl.dll
libeay32.dll
libiconv.dll
libpq.dll
libxml2.dll
libxslt.dll
ssleay32.dll

0

ską wiąć te pliki? nie widzę ich w katalogu Python33, zresztą nie mam dodanej żadnej zmiennej środowiskowej.
proszę napisz skąd do kąd skopiować te pliki, bo nie ogarniam , albo prościej co dodać w zmiennych środowiskowych,
katalog z pythonem mam w C:\Python33\

0

jeśli masz postgresa zainstalowanego to w jego katalogu powinny być, jeśli nie to możesz ściągnąć stąd https://gestinux.net/mediawiki/index.php/Install_Postgresql_client_driver

0

pobrałem ten folder :
postgresql-9.5.10-2-windows-x64-binaries

i gdzie mam go rozpakować? nie ogarniam... , w Python33? tam jest cała masa folderów. nie wiem czy to dobra droga :)

0

tam gdzie masz plik python.exe pewnie podkatalog bin. TYLKO NIE CAŁY TEN ZIP tylko pliki, które Ci wyżej wypisałem z podkatalogu pgsql\bin

0

w katalogu python33 mam tylko foldery:
DLLs
Doc
include
Lib
libs
tcl
Tools
... ; bin nie widziałem ale przeinstalowałem te wszystkie programy zaczynając od postgresql-a poprzez pythona i psycopg2
jednak nie rozwiązało to problemu...

0

to możesz te pliki wrzucić do windows\system32 i do windows\syswow64 (ten drugi katalog tylko przy 64-bit systemie występuje)

0

wkleiłem wszystkie pliki z folderu bin z:
postgresql-9.3.15-1-windows-binaries
do folderu system32 oprócz intl.dll (nie mogłem go znaleźć)
i nadal wyskakuje błąd w interpreterze:
psycopg2.OperationalError

nie widzę żadnego rozwiązania.
dziękuję za pomoc. ale już nie ogarniam :(

0

pobawiłem się trochę z tym plikiem i doprowadziłem do innego błędu, komunikat w interpreterze jest taki:

psycopg2.OperationalError: could not translate host name "localhost," to address: Unknown host

składania polecenia z tym błędem jest taka:
connection=psycopg2.connect("dbname=kurs_pythona, user=admin, password=admin, host=localhost, port=5432")

jeśli by ktoś wyjaśnił czemu "host name" zwraca błąd byłbym zobowiązany.
pozdrawiam!

0

czemu to trudno powiedzieć. Zamień localhost na 127.0.0.1 lub na lokalny adres swojej maszyny

0

w zmiennych środowiskowych mam dodaną wartość:
Path

ustalone jest tam kilka zmiennych np:
C:\Program Files\PostgreSQL\9.5\bin
oraz
C:\Python33\

więc powinno widać wszystkie skróty do tych katalogów

1 użytkowników online, w tym zalogowanych: 0, gości: 1