Python ja MySQL ühendamine: Samm-sammuline juhend algajatele ja edasijõudnutele

1. Pythoni ja MySQLi integreerimine: Sissejuhatus

Python on väga paindlik programmeerimiskeel, mis suudab töötada koos erinevate andmebaasihaldussüsteemidega (DBMS). Eriti MySQL, mida kasutatakse laialdaselt avatud lähtekoodiga relatsioonilise andmebaasina, pakub koos Pythoniga võimsaid võimalusi andmete töötlemiseks.

Selles artiklis selgitame, kuidas Pythoniga MySQLi ühendada ning teha põhitoiminguid andmebaasis (andmete lisamine, lugemine, uuendamine, kustutamine).

2. Keskkonna seadistamine MySQLi ja Pythoniga töötamiseks

Kõigepealt tuleb seadistada keskkond, et Python saaks MySQLiga suhelda. Selles jaotises kirjeldame vajaliku tarkvara paigaldamist ja seadistamist.

2.1 MySQLi paigaldamine

MySQLi paigaldamise protsess sõltub operatsioonisüsteemist. Allpool on toodud lühike juhend iga OS-i jaoks.

  • Windows: Laadige alla paigaldaja MySQLi ametlikult veebisaidilt ja järgige juhiseid.
  • Mac: Kasutage Homebrewi ja käivitage brew install mysql.
  • Linux: Debianil põhinevates süsteemides kasutage sudo apt-get install mysql-server.

2.2 Pythoni keskkonna seadistamine

Seejärel tuleb Pythoni keskkonda lisada vajalikud teegid. MySQLiga ühenduse loomiseks saab kasutada järgmisi teeke:

  • mysql-connector-python: Oracle’i ametlik MySQLi ühendusteek.
  • PyMySQL: Puhas-Pythoni teek, mis ühildub MySQLdb-ga.

Paigaldamine on lihtne, käivitage lihtsalt järgmine käsk:

pip install mysql-connector-python

Või kui kasutate PyMySQL-i, siis:

pip install pymysql

2.3 Teekide erinevused

mysql-connector-python on ametlik MySQLi teek, millel on hea jõudlus ja tugi. PyMySQL on kergem ja sobib juhul, kui on vaja MySQLdb ühilduvust. Valik sõltub projekti vajadustest.

3. Pythoni abil MySQLiga ühendamine: Põhitoimingud

Pythoni abil MySQLiga ühenduse loomine on väga lihtne. Selles jaotises selgitame, kuidas luua ühendus ja töötada andmebaasi tabelitega.

3.1 Ühenduse loomine MySQLi andmebaasiga

Allpool on näide, kuidas luua ühendus kasutades mysql-connector-python-i:

import mysql.connector

# Ühenduse andmed MySQL serveriga
conn = mysql.connector.connect(
    host='localhost',
    user='root',
    password='password',
    database='test_db'
)

# Kontrolli ühendust
if conn.is_connected():
    print("Ühendus MySQL serveriga õnnestus!")

3.2 Kui ühendus ebaõnnestub

Kui ühendus ei õnnestu, võivad põhjused olla järgmised:

  • Autentimisviga: Kasutajanimi või parool võib olla vale.
  • Ühenduse viga: Kontrollige, kas server töötab ja tulemüüri seaded on õiged.

Nende vigade käsitlemiseks saab kasutada try-except struktuuri:

try:
    conn = mysql.connector.connect(...)
except mysql.connector.Error as err:
    print(f"Viga: {err}")

4. Põhilised SQL-toimingud

Pärast MySQLiga ühenduse loomist saab hakata tegema põhilisi SQL-toiminguid. Siin selgitame, kuidas sisestada, lugeda, uuendada ja kustutada andmeid.

4.1 Andmete sisestamine

Uute andmete lisamiseks tabelisse kasutatakse järgmist SQL-lauset:

cursor = conn.cursor()

# Andmete lisamise päring
insert_query = "INSERT INTO users (username, email) VALUES (%s, %s)"
data = ("user1", "user1@example.com")

# Käivita päring
cursor.execute(insert_query, data)

# Kinnita muudatused
conn.commit()

4.2 Andmete lugemine

Andmete lugemiseks kasutatakse SELECT-lauset. Näiteks kõigi kasutajate info toomiseks:

cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()

# Tulemuste kuvamine
for row in rows:
    print(row)

4.3 Andmete uuendamine

Olemasolevate andmete uuendamiseks kasutatakse UPDATE-lauset.

update_query = "UPDATE users SET email = %s WHERE username = %s"
cursor.execute(update_query, ("new_email@example.com", "user1"))
conn.commit()

4.4 Andmete kustutamine

Ülearuste andmete kustutamiseks kasutatakse DELETE-lauset.

delete_query = "DELETE FROM users WHERE username = %s"
cursor.execute(delete_query, ("user1",))
conn.commit()

5. Täpsemad toimingud

Järgmiseks vaatame keerukamaid funktsioone, nagu tehingute haldus ja ettevalmistatud laused.

5.1 Tehingute haldamine

Mitme andmebaasitoimingu korraga käivitamiseks ja vajadusel tagasipööramiseks kasutatakse tehinguid.

try:
    cursor.execute("...")
    conn.commit()  # Kui kõik õnnestub, kinnita
except:
    conn.rollback()  # Kui tekib viga, siis tühista muudatused

5.2 Ettevalmistatud laused

SQL-süstide vältimiseks on soovitatav kasutada ettevalmistatud lauseid.

stmt = "SELECT * FROM users WHERE username = %s"
cursor.execute(stmt, ("user1",))

6. Pythoni ja MySQLi praktilised näited

Pythoni ja MySQLi kombineerimine võimaldab luua mitmesuguseid praktilisi rakendusi. Selles jaotises tutvustame mõningaid rakendusnäiteid.

6.1 Kasutajahaldussüsteemi loomine

Kasutajahaldus on üks klassikalisemaid süsteeme, mida saab Pythoniga MySQLi abil ehitada. Allpool on toodud põhietapid.

Samm 1: Kasutajate tabeli loomine

Esmalt looge tabel kasutajate info salvestamiseks:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password VARCHAR(255) NOT NULL
);

Samm 2: Uue kasutaja registreerimine

Uue kasutaja lisamiseks kasutatakse INSERT-päringut:

import mysql.connector

# Ühenda MySQLiga
conn = mysql.connector.connect(user='root', password='password', host='localhost', database='test_db')
cursor = conn.cursor()

# Uue kasutaja sisestamine
insert_query = "INSERT INTO users (username, email, password) VALUES (%s, %s, %s)"
user_data = ("user123", "user123@example.com", "securepassword")
cursor.execute(insert_query, user_data)

# Kinnita muudatused
conn.commit()

# Sulge ühendus
cursor.close()
conn.close()

Samm 3: Sisselogimisfunktsioon

Lisage ka funktsioon kasutajate sisselogimiseks:

# Kontrolli kasutaja olemasolu sisselogimisel
login_query = "SELECT * FROM users WHERE username = %s AND password = %s"
login_data = ("user123", "securepassword")
cursor.execute(login_query, login_data)

user = cursor.fetchone()
if user:
    print("Sisselogimine õnnestus")
else:
    print("Sisselogimine ebaõnnestus")

6.2 MySQL andmeanalüüsis

Kasutades MySQLi andmete hoidmiseks ja Pythoni analüüsiraamistikke, näiteks Pandast, saab teha võimsaid analüüse.

Samm 1: Andmete toomine MySQList

import mysql.connector
import pandas as pd

# Ühenda MySQLiga
conn = mysql.connector.connect(user='root', password='password', host='localhost', database='test_db')
cursor = conn.cursor()

# Too andmed ja teisenda Pandase DataFrame’iks
query = "SELECT * FROM users"
cursor.execute(query)
rows = cursor.fetchall()

df = pd.DataFrame(rows, columns=['id', 'username', 'email', 'password'])

print(df.head())

cursor.close()
conn.close()

Samm 2: Andmete analüüs Pandasega

Näiteks saab uurida, mitu kasutajat kasutab sama e-posti domeeni:

# Loenda kasutajaid domeeni järgi
df['domain'] = df['email'].apply(lambda x: x.split('@')[1])
domain_count = df['domain'].value_counts()

print(domain_count)

7. Kokkuvõte ja järgmised sammud

Käesolevas artiklis vaatasime läbi Pythoni ja MySQLi põhiliidestuse: ühenduse loomise, andmete töötlemise, kasutajahaldussüsteemi loomise ja andmeanalüüsi. See tehnoloogia on väga võimas veebirakenduste ja andmetöötluse aluseks.

7.1 Järgmised sammud

Pärast siinseid põhiteadmisi soovitame edasi liikuda järgmiste teemade juurde:

  • Django või Flask: Pythoni veebiraamistike kasutamine keerukamate rakenduste ehitamiseks.
  • Andmebaasi optimeerimine: Õppige MySQLi indeksite ja päringute optimeerimist, et suurendada jõudlust.
  • Suurandmete analüüs: Töötlege MySQLi andmeid Pythoniga ja rakendage masinõppe mudeleid või teostage keerukaid andmeanalüüse.