Ochrona płatnościSzczegóły
- Poprawki w ramach pakietu są bezpłatne.
- Jeśli nie odpowiesz w ciągu 3 dni od dostarczenia pracy, zostanie ona zaakceptowana automatycznie.
Pieniądze są rezerwowane w chwili płatności i przekazywane dopiero po akceptacji pracy.

Przykładowy rezultat
Łączenie miesięcznych plików sprzedaży 9 sklepów w jeden raport w Excelu
Jak się go uruchamia
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Folder: sales/2026-10, znaleziono 9 plików
2026-11-02 09:14:03 INFO shop-01.csv: 1284 wiersze
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 wierszy
2026-11-02 09:14:04 WARN shop-07.csv: pominięto 3 wiersze bez ceny (linie 88, 412, 913)
2026-11-02 09:14:05 INFO Gotowe: 10 412 wierszy -> report-2026-10.xlsx (arkusze „Sprzedaż” i „Podsumowanie”)
Ustawienia zamiast kodu
Nazwy kolumn każdego sklepu są zapisane w settings.ini, więc nowy sklep albo kolumna o zmienionej nazwie to po prostu jeden wiersz w tym pliku:
[columns]
date = Data, Data sprzedaży, Dzień
product = Produkt, Towar, Nazwa
quantity = Ilość, Szt., Liczba sztuk
price = Cena, Cena jedn.
Fragment kodu
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Wczytuje plik jednego sklepu i nadaje mu nazwy kolumn raportu."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: brak kolumny dla '{name}' (szukano: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Pliki: archiwum ZIP z plikami merge_sales.py (310 wierszy), settings.ini, requirements.txt oraz README, które opisuje instalację Pythona, uruchomienie skryptu i znaczenie każdego komunikatu w dzienniku. Klient uruchamia skrypt na własnym komputerze.
Klient: mała sieć 9 sklepów papierniczych; każdy sklep przesyła sprzedaż za miesiąc w pliku CSV lub Excel, z nieco innymi nazwami kolumn. Zadanie: jeden skrypt, który wczytuje każdy plik z folderu, sprowadza kolumny do jednego układu i zapisuje jeden raport w Excelu z całą sprzedażą oraz arkuszem podsumowań według sklepów.
Klient i wszystkie dane są wymyślone.
O usłudze
Baza danych bez regularnych kopii jest o jedną nieudaną aktualizację lub zapełniony dysk od utraty zamówień, wpisów czy danych klientów. Ten skrypt, w Bashu lub Pythonie, zależnie od Twojego serwera, robi pełny zrzut bazy MySQL, MariaDB lub PostgreSQL za pomocą dołączonych do niej narzędzi (mysqldump lub pg_dump), kompresuje go, nadaje mu nazwę z datą i zachowuje tylko kopie zgodne z Twoimi zasadami, na przykład 7 dziennych, 4 tygodniowe i 6 miesięcznych; starsze są usuwane wyłącznie według tych zasad. Hasło do bazy trafia do standardowego pliku opcji, który wypełniasz na swoim serwerze (.my.cnf lub .pgpass), nigdy do kodu. Instalujesz go i uruchamiasz na własnym serwerze; nigdy się na niego nie logujemy. Najpierw wypróbuj go na kopii testowej i przywróć jedną kopię do testowej bazy, żeby upewnić się, że działa.
Co obejmuje usługa
- Co otrzymaszArchiwum ZIP ze skryptem, plikiem README z instrukcją krok po kroku oraz, od pakietu Standard, plikiem ustawień z bazami, folderami i liczbą kopii do zachowania; kod widać też na stronie zamówienia.
- Standardowe narzędziamysqldump lub pg_dump, nic egzotycznego do instalowania
- Rotacja według Twoich zasadStare kopie usuwane tylko tak, jak ustalisz
- Hasło poza kodemW .my.cnf lub .pgpass na Twoim serwerze
- Wykrywanie błędówOd pakietu Standard nieudany lub pusty zrzut jest zapisywany w logu i nie liczy się jako kopia
- Czytelny kodZ komentarzami, łatwo później dodać bazę
Jak to działa
- 1ZadanieOpisujesz serwer, bazy danych i liczbę kopii do zachowania
- 2KodPiszemy skrypt i instrukcję instalacji
- 3WypróbujUruchamiasz go na kopii testowej i przywracasz jedną kopię do testowej bazy
- 4ZmianyZgłaszasz poprawki w ramach pakietu i przesyłasz ewentualny komunikat o błędzie
Czego potrzebujemy od Ciebie
Baza danych (MySQL, MariaDB lub PostgreSQL) i jej wersja, system serwera (na przykład Ubuntu 22.04) i czy możesz instalować na nim pakiety, rozmiar bazy, gdzie mają być przechowywane kopie i ile jest miejsca. Twoje zasady rotacji: ile kopii dziennych, tygodniowych i miesięcznych zachować. W pakiecie Premium drugie miejsce na kopie i adres do e-maili o błędach. Nigdy nie przesyłaj haseł ani dostępu do serwera.
Zapytamy Cię:
- Jaka baza i jak duża?
- Na jakim serwerze działa?
- Ile kopii zachować?
- Gdzie mają trafiać kopie?
- Bash czy Python?
Porównaj pakiety
| Pakiety | PodstawowyJedna baza danych61 zł | StandardKopia zapasowa z ustawieniami125 zł | PremiumNarzędzie do kopii zapasowych252 zł |
|---|---|---|---|
| Termin | 1 dzień | 2 dni | 3 dni |
| Poprawki | 1 | 2 | 3 |
| Kod | do 150 wierszy | do 400 wierszy | do 1000 wierszy |
| Pliki z kodem | 1 | do 3 | do 8 |
| Plik ustawień | Nie | Tak | Tak |
| Czytelne komunikaty o błędach i log | Nie | Tak | Tak |
| Opcje uruchamiania i instrukcja uruchamiania według harmonogramu | Nie | Nie | Tak |
| Instrukcja instalacji i uruchomienia (README) | Tak | Tak | Tak |
| Język | Bash lub Python | Bash lub Python | Bash lub Python |
| Zamów Podstawowy | Zamów Standard | Zamów Premium |
Ochrona płatności
Płacisz przy składaniu zamówienia, ale pieniądze są przekazywane tylko za zaakceptowaną pracę.
- Stała cenaCena pakietu nie zmienia się po zapłacie.
- Pieniądze są zarezerwowanePrzy płatności kwota jest tylko rezerwowana. Serwis otrzymuje ją dopiero po akceptacji pracy.
- Sprawdzone przed dostarczeniemKażdy wynik przechodzi kontrolę jakości, zanim do Ciebie trafi, a przed akceptacją widzisz go na stronie zamówienia.
- Bezpłatne poprawkiProś o poprawki w ramach briefu tyle razy, ile przewiduje pakiet.
- Akceptacja po 3 dniachJeśli w ciągu 3 dni od dostarczenia pracy ani jej nie zaakceptujesz, ani nie poprosisz o poprawki, zostanie zaakceptowana automatycznie. Jeśli po dostarczeniu napiszesz na czacie zamówienia, zamówienie czeka; po naszej odpowiedzi możemy ponownie uruchomić odliczanie 3 dni i poinformujemy o tym na czacie.
- Ponowne wykonanie lub pełny zwrot pieniędzyJeśli wynik nie odpowiada Twojemu briefowi, a poprawki tego nie naprawiły, lub praca trwa ponad dwa razy dłużej niż termin, napisz na czacie zamówienia: wykonamy pracę ponownie albo zwrócimy całą płatność.
Pytania i odpowiedzi
Czy będzie usuwać stare kopie zapasowe?
Tylko według podanych przez Ciebie zasad, na przykład zachowując 7 kopii dziennych i 4 tygodniowe, i tylko w folderze kopii, do którego zapisuje. Dopóki nie ustalisz zasad, zachowuje wszystko.
Czy mogę przechowywać kopie poza serwerem?
Pakiet Premium kopiuje każdą kopię zapasową na drugi dysk lub do magazynu, który już masz, za pomocą jego własnego narzędzia wiersza poleceń i Twoich własnych kluczy, które sam wpisujesz w jego ustawieniach.
Czy blokuje stronę na czas działania?
Dla tabel InnoDB w MySQL i dla PostgreSQL zrzut jest wykonywany bez zatrzymywania strony. Bardzo duże bazy mogą ją jednak spowolnić, więc uruchamiaj go w spokojnych godzinach.
Czy skonfigurujecie go na moim serwerze?
Nie. Nigdy nie logujemy się na Twój serwer. README pokazuje każdy krok, od skopiowania skryptu po dodanie go do cron (Premium).
Nie ma tu odpowiedzi?