Wyciąganie danych z bazy MySQL i generowanie pliku CSV

Czasami musisz wyciągnąć dane z bazy MySQL i zapisać je w pliku CSV – niezależnie od tego, czy jest to do raportów, przenoszenia danych, czy po prostu udostępnienia ich komuś innemu. W tym artykule krok po kroku pokażę Ci, jak to zrobić. A co najlepsze? Zrobimy to w stylu prostym i przystępnym, więc nie martw się, jeśli nie jesteś mistrzem kodowania! 😊

Przejdźmy do rzeczy!

Co to jest CSV i dlaczego warto go używać?

Zanim zaczniemy pisać kod, krótko o tym, czym właściwie jest plik CSV. To zwykły plik tekstowy, w którym dane są rozdzielane przecinkami (stąd nazwa Comma Separated Values). CSV jest popularny, bo:

  • Działa praktycznie wszędzie – otworzysz go w Excelu, Google Sheets, a nawet w zwykłym notatniku.
  • Jest lekki i prosty do przenoszenia.
  • Można go łatwo zaimportować do innych systemów.

A teraz – jak go wygenerować z danych zapisanych w bazie MySQL?

Przygotowanie środowiska

Zanim zaczniemy kodowanie, upewnij się, że masz wszystko, co potrzebne:

  1. Baza danych MySQL – musisz mieć zainstalowanego MySQL i dostęp do bazy danych, z której chcesz wyciągnąć dane.
  2. Python – będziemy używać Pythona (ale spokojnie, to proste!). Upewnij się, że masz zainstalowanego Pythona na swoim komputerze.
  3. Biblioteki Python – potrzebujesz:
    • mysql-connector-python (do łączenia z bazą MySQL)
    • csv (do tworzenia plików CSV, jest wbudowana w Pythona).

Instalacja bibliotek

Jeśli nie masz mysql-connector-python, możesz zainstalować go za pomocą pip:

pip install mysql-connector-python

Gotowe? Super, jedziemy dalej!

Krok 1: Połącz się z bazą danych MySQL

Najpierw musisz nawiązać połączenie z bazą danych. Oto prosty kod:

import mysql.connector

# Ustawienia połączenia
config = {
    'user': 'twoja_nazwa_uzytkownika',  # np. root
    'password': 'twoje_haslo',
    'host': 'localhost',               # lub adres serwera
    'database': 'nazwa_bazy_danych',   # podaj nazwę swojej bazy
}

try:
    # Tworzenie połączenia
    connection = mysql.connector.connect(**config)
    print("Połączono z bazą danych!")
except mysql.connector.Error as err:
    print(f"Błąd: {err}")
    exit()

Wskazówka: Zawsze pamiętaj o poprawnym zabezpieczeniu swoich danych dostępowych!

Krok 2: Wyciągnij dane z tabeli

Teraz pobierzemy dane, które chcemy zapisać w pliku CSV. Przyjmijmy, że mamy tabelę o nazwie produkty z kolumnami idnazwacena.

cursor = connection.cursor()

# SQL do pobrania danych
query = "SELECT id, nazwa, cena FROM produkty"

try:
    cursor.execute(query)
    dane = cursor.fetchall()
    print("Dane pobrane pomyślnie!")
except mysql.connector.Error as err:
    print(f"Błąd podczas pobierania danych: {err}")
    exit()

Tutaj użyliśmy metody fetchall(), która pobiera wszystkie rekordy z zapytania SQL. Możesz to zmodyfikować, jeśli potrzebujesz tylko części danych (np. za pomocą LIMIT w zapytaniu SQL).

Krok 3: Generowanie pliku CSV

Wszystko, co mamy w zmiennej dane, możemy teraz zapisać w pliku CSV. Oto jak to zrobić:

import csv

# Ścieżka do pliku CSV
plik_csv = "produkty.csv"

# Tworzenie i zapisywanie pliku CSV
try:
    with open(plik_csv, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        
        # Nagłówki kolumn (opcjonalne)
        writer.writerow(['ID', 'Nazwa', 'Cena'])
        
        # Zapis danych
        writer.writerows(dane)
    
    print(f"Dane zapisane w pliku: {plik_csv}")
except Exception as e:
    print(f"Błąd podczas zapisywania pliku: {e}")

W tym kodzie:

  • Użyliśmy csv.writer do zapisania danych w pliku CSV.
  • Dodaliśmy nagłówki, które są opcjonalne, ale często przydatne.

Krok 4: Sprzątanie po sobie

Nigdy nie zostawiaj otwartych połączeń z bazą danych! Na końcu zamknij połączenie:

# Zamknięcie połączenia
cursor.close()
connection.close()
print("Połączenie z bazą danych zostało zamknięte.")

Pełny kod

Oto cały kod w jednym miejscu, dla Twojej wygody:

import mysql.connector
import csv

# Ustawienia połączenia
config = {
    'user': 'twoja_nazwa_uzytkownika',
    'password': 'twoje_haslo',
    'host': 'localhost',
    'database': 'nazwa_bazy_danych',
}

try:
    # Połączenie z bazą danych
    connection = mysql.connector.connect(**config)
    print("Połączono z bazą danych!")
    
    cursor = connection.cursor()

    # Pobranie danych z tabeli
    query = "SELECT id, nazwa, cena FROM produkty"
    cursor.execute(query)
    dane = cursor.fetchall()

    # Tworzenie pliku CSV
    plik_csv = "produkty.csv"
    with open(plik_csv, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        writer.writerow(['ID', 'Nazwa', 'Cena'])
        writer.writerows(dane)
    
    print(f"Dane zapisane w pliku: {plik_csv}")

except mysql.connector.Error as err:
    print(f"Błąd: {err}")
except Exception as e:
    print(f"Inny błąd: {e}")
finally:
    if 'cursor' in locals() and cursor:
        cursor.close()
    if 'connection' in locals() and connection.is_connected():
        connection.close()
    print("Połączenie z bazą danych zostało zamknięte.")

I to wszystko! Teraz umiesz połączyć się z bazą MySQL, wyciągnąć dane i zapisać je w pliku CSV. To proste, prawda? Możesz dostosować ten kod do swoich potrzeb, np. zmienić strukturę tabeli, dodać filtrowanie danych, czy obsługę bardziej zaawansowanych zapytań SQL.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl