Aktywne Wpisy

Salido +213
Minął 21. (z 66) dzień wakacji.
Najtragiczniejszy dzień tych wakacji
W ciągu ostatniej doby miało miejsce 11 wypadków śmiertelnych w których zginęło 12 osób.
93
Najtragiczniejszy dzień tych wakacji
W ciągu ostatniej doby miało miejsce 11 wypadków śmiertelnych w których zginęło 12 osób.
93
źródło: 1-453841-6
Pobierz
PiotrFr +17
Mariusze węszą kolejny spisek producentów po suvach i elektrykach.
Oczywiście ta "klasyczna motoryzacja" to koniecznie R4, najlepiej w klekocie ( ͡° ͜ʖ ͡°)
#motoryzacja #samochody
Oczywiście ta "klasyczna motoryzacja" to koniecznie R4, najlepiej w klekocie ( ͡° ͜ʖ ͡°)
#motoryzacja #samochody
źródło: 1000022423
Pobierz




tl;dr Proszę o ocenę mojego pierwszego kodowego projektu :)
w ramach nauki programowania tworzę sobie bibliotekę ułatwiającą komunikację pythona, a konkretnie biblioteki pandas z bazą postgresql. Oczywiście cały projekt jest dość w powijakach, a z programowania jestem raczej początkujący, więc pewnie roi się od bugów i brzydkiego kodu. Dlatego chciałbym Was prosić o opinię w każdym aspekcie, zwłaszcza o wskazanie co jest do poprawy zarówno w projekcie, jak i w sposobie mojego kodowania. Poniżej link do GitHuba:
Link
idea opiera się na tym, żeby w móc w prosty sposób wczytywać dane z db prosto do DataFrame, ale też w prosty sposób przeprowadzać inserty, update'y i wyciągać podstawowe informacje nt. tabel, kolumn, kluczy głównych, schematów itp. Nie mogłem za bardzo znaleźć biblioteki która by DataFrame'y łatwo ładowała do bazy, więc stwierdziłem że sam napiszę, ale jeśli ktoś takie zna (oprócz samego pandas, który ma mocno ograniczone funkcjonalności w tym zakresie), to super by było, gdyby się podzielił ;)
wołam także @Kiro i @biwalencik, z którymi niedawno przeprowadziłem krótką dyskusję na temat sensu pisania takiej biblioteki, może będziecie zainteresowani pierwszymi wynikami :)
Ogólnie to ja bym nie sprawdzał tego is instance wcale w tym miejscu
@dog_meat: rzeczywiście nie pomyślałem o zamykaniu połączenia. myślisz że przy każdym wywołaniu funkcji powinno się łączyć i po wykonaniu funkcji zamykać? co do self.db_name to korzystam właśnie przy nawiązywaniu połączenia :)
Wcięcia to powinny być 4 spacje a nie twardy tabulator.
Pomyśl czy nie warto by napisać troszkę testów jednostkowych, przynajmniej do najważniejszych
@dog_meat: tak tak, zdaję sobię sprawę. tam gdzie użytkownik podaje dane, tam jest to odpowiednio zabezpieczone, ale chyba rzeczywiście nie poprawiłem tego w kilku funkcjach, które wczesniej zdefiniowałem. mógłbyś mi tylko jeszcze wytłumaczyć o co chodziło z tym zbędnym self.db_name?
Zamykanie połączeń robiłbym przez kontekst managera (chyba najlepiej jako osobną klasę), która zwróci Ci obiekt Twojej klasy do operowania na nim w bloku with.
Tam gdzie robisz p.connect() to sklejasz niezdarnie te stringi, zamiast używać keyword arguments
za http://initd.org/psycopg/docs/module.html
źródło: comment_nDKDfHHUAWgx5hUb36chbla7dwJnHMBg.jpg
Pobierzhttp://pandas.pydata.org/pandas-docs/version/0.20/generated/pandas.read_sql.html
Czego ci tam brakowało tak konkretnie? W sumie tak samo w tosql, czego ci brakowało przy zapisie?
Pandas się lubi z SQLAlchemy, więc one razem całkiem sprawnie robią większość operacji, dlatego nie znam biblioteczki która by robiła to co
wczytywanie do pandas to zrobiłem już trochę z rozpędu żeby było, ale czy jest jakaś biblioteka która w miarę łatwo pozwala robić update'y i inserty? nic nie mogłem znaleźć takiego, więc postanowiłem sam zrobić
http://odo.pydata.org/en/latest/overview.html
Nie ma co wynajdywac kola od nowa.
odo(df, 'postgresql://hostname::tablename')Jeśli tak to może rzeczywiście to wszystko niepotrzebne :P ale co się nauczyłem to moje :D
Potrafi wszystko to co sqlAlchemy i tam też wcześniej Cie kierowałem.
To również jeden z głównych mankamentów Twojego kodu. Używasz formatowania stringów do generowania zapytań SQLa i wrzucasz je na exec do