Ana içeriğe atla

Python’da MySQL Eğitimi: Başlangıç

Bu eğitimde MySQL’i nasıl kuracağınızı, veritabanları ve tablolar oluşturmayı ve çok daha fazlasını öğreneceksiniz.
Güncel 3 Eki 2026  · 13 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

MySQL, istemci-sunucu modelini benimseyen bir ilişkisel veritabanı yönetim sistemidir (RDBMS). Bunun anlamı şudur: Veriye erişmek isteyen bir bilgisayar ("istemci"), bunu yapmak için RDBMS sunucusuna bağlanmak zorundadır. 

Öte yandan Python, yaygın olarak kullanılan, üst düzey ve genel amaçlı bir programlama dilidir. Geliştiriciler sıklıkla web siteleri ve yazılımlar oluşturmak, görevleri otomatikleştirmek ve verileri analiz etmek için kullanır. MySQL dahil çeşitli veritabanlarıyla da kullanılabilir. Python; veri sorgulama ifadelerini, veri tanımlama dilini ve veri işleme işlemlerini destekler. Bu eğitimde Python’da MySQL ile nasıl çalışacağınızı göreceksiniz. 

Python’da MySQL’e Başlarken

Python’da MySQL’i DataCamp çalışma alanınızdan kullanmak için mevcut barındırılan bir veritabanına bağlanmak üzere çalışma alanı entegrasyonlarını kullanmalısınız. Biz veritabanımızı sıfırdan oluşturacağız, bu nedenle bu eğitimde DataCamp çalışma alanını kullanmayacağız. 

Bu eğitimi adım adım takip etmek için iki adımı tamamlamalısınız: 

  1. MySQL sunucusunu kurun; bu, veritabanını yönetmek için gerekli hizmetleri sağlar. MySQL web sitesinden indirip kurabilirsiniz. 
  2. MySQL connector’ı kurun; bu, Python uygulamalarınızı MySQL veritabanlarınıza entegre etmenize yardımcı olan bir Python sürücüsüdür. pip (Python’un paket yöneticisi) ile kolayca kurulabilir.

MySQL sunucusunu kurduktan sonra: 

  1. Bu GitHub deposunu yerel makinenize klonlayın – GitHub’da depo nasıl klonlanır?
  2. Sanal bir ortam oluşturup etkinleştirin – sanal ortamların oluşturulması. 
  3. Gerekli paketleri terminalden pip install -r requirements komutuyla kurun.  
  4. Kök dizinde bir .env dosyası oluşturun.
    1. MySQL sunucusunda kullanıcınızı doğrulamak için parolanızı PASSWORD adlı bir değişkende saklayın – kök kullanıcıya parola atamadıysanız sunucu parola gerektirmez.  

Uyarılar

Depodaki her dosya, bu eğitimdeki sırasını göstermek için bir numarayla başlar.

Örneğin, 04_data_insertion.py modülün 4. (01 - 03’ten sonra) çalıştırılması gerektiğini belirtir. Tüm kodu 00_execute_all.py dosyasını çalıştırarak da yürütebilirsiniz.

Bağlantı kurma

MySQL bir sunucu-istemci modelini izler; bir istemci veriye erişmek istediğinde RDBMS’ye bağlanmak zorundadır. 

Sunucuyla bağlantı kurmanın yolu, mysql.connector modülündeki connect() yöntemini kullanmaktır…

import os

from mysql import connector
from dotenv import load_dotenv


load_dotenv()
PASSWORD = os.getenv("PASSWORD")

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD
    ) as database:
        print(database)
except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x00000188FA653970>
"""

connect() yönteminin tüm argüman kapsamını dokümantasyonda görebilirsiniz. 

Bu kodla ilgili dikkat edilmesi gereken üç nokta vardır: 

  1. İstisna ve Hata yönetimi: MySQL sunucusuna bağlantı kurarken hataları ele almak iyi bir uygulamadır. 
  2. Bağlantıyı kapatma: Bir bağlam yöneticisi kullandık, bu nedenle bağlantıyı close() yöntemiyle açıkça kapatmadık. Genel olarak, beklenmedik hataları önlemek için veritabanına erişiminiz bittiğinde bağlantılar kapatılmalıdır. 
  3. Hassas veriler: Hassas bilgileri gizlemek için ortam değişkenlerini kullanın; paylaşmak güvenlik riski oluşturur. 

Artık Python programınız ile MySQL sunucusu arasında bir bağlantı kurduğunuza göre, sunucuda bulunabilecek çok sayıdaki veritabanından birine bağlanmaya hazırsınız. Şu anda hiç yok; bu da sunucu içinde yeni bir veritabanı oluşturmamız gerektiği anlamına geliyor. Bunu bir sonraki bölümde nasıl yapacağımıza bakalım. 

Not: Veritabanına her erişildiğinde sunucuyla bir bağlantı kurulmalıdır. Eğitim boyunca tekrarı önlemek için sonraki kod örneklerinde bunu koddan çıkaracağız. Ancak kod tabanına dahildir.

Python ile MySQL’de yeni bir veritabanı oluşturma

Bundan sonra SQL becerilerine ihtiyacınız olacak; DataCamp’in Introduction to SQL kursu hızlıca seviyenizi yükseltmek için iyi bir başlangıç noktasıdır. 

MySQL’de veritabanı oluşturmanın tipik yolu şöyledir: 

CREATE DATABASE book_ratings;

Aynı sorguyu Python’da gerçekleştirmek için cursor() nesnesinin bir örneğini oluşturmalısınız. 

cursor() nesnesinden, SQL komutlarını dize olarak execute() yöntemine iletip kodu yürütebilirsiniz. 

“book_ratings” adlı bir veritabanı oluşturalım…

create_db = "CREATE DATABASE book_ratings"
with database.cursor() as cursor:
    cursor.execute(create_db)

Not: Bu kodu birden fazla kez çalıştırmak, veritabanının zaten var olduğunu bildiren bir hata yükseltecektir.

Bir sunucuda mevcut veritabanlarını şu şekilde kontrol edebilirsiniz:

show_existing_db = "SHOW DATABASES"

with database.cursor() as cursor: 
    cursor.execute(show_existing_db)
    for db in cursor:
        print(db)

"""
('book_ratings',)
('information_schema',)
('mysql',)
('performance_schema',)
('sakila',)
('sys',)
('world',)
"""

Yukarıdaki kod, şu anda MySQL sunucumuzda bulunan tüm veritabanlarının adlarını çıktılar. Birden fazla olmasının nedeni, MySQL sunucusunun çeşitli veritabanı üst verilerine ve sunucu ayarlarına erişim sağlamak için otomatik olarak veritabanları oluşturmasıdır.

Mevcut bir veritabanına bağlanma

Diyelim ki bir veritabanı oluşturdunuz ancak henüz sunucuya bağlanmadınız; veritabanına doğrudan nasıl bağlanırsınız? 

Kolay. 

Veritabanının adını connect() yöntemine argüman olarak iletin:

try:
    with connector.connect(
        host = "localhost",
        user = "root",
        password = PASSWORD,
        database = "book_ratings"
    ) as database:
       
        print(database})

except connector.Error as e:
    print(e)

"""
<mysql.connector.connection_cext.CMySQLConnection object at 0x0000016DD8C24970>
"""

Tablo Oluşturma

Bir veritabanındaki bilgiler bir tabloda saklanır. Tablo, sütunlar ve satırlardan oluşan ilgili veri koleksiyonlarını saklamak için kullanılan bir formattan ibarettir. 

Bir veritabanında, birbirleriyle ilişkili olmasalar bile birden çok tablo bulunabilir. Bu bölümde göstereceğimiz gibi, tek bir tablo içeren ilişkisel bir veritabanınız da olabilir – ilişkisel veritabanları hakkındaki bilginizi Introduction to Relational Databases in SQL kursuyla genişletin. 

Tablo oluşturma, şimdiye kadar gördüğünüze benzer bir yaklaşımı izler; 

  • Bir SQL komutunu dize olarak yazın 
  • Bunu imleç nesnesinin execute() yöntemine iletin. 

Bu örnekteki SQL ifadesi CREATE TABLE’dır.

Bunu kullanarak kitaplar için bir tablo oluşturalım:

create_books_table = """
CREATE TABLE books(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100),
    author VARCHAR(100),
    genre VARCHAR(100),
    release_year YEAR(4)
)
"""
# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(create_books_table)
    existing_database.commit()

Kodun son satırında, existing_database nesnemiz üzerinde commit() yöntemini kullandığımızı fark etmiş olabilirsiniz. Bunu yapmak zorundaydık çünkü MySQL Python connector’ın varsayılan davranışı bir işlemi otomatik olarak onaylamamaktır. 

Bir tabloda veriyi her değiştirdiğinizde commit() yöntemini çağırmalısınız – MySQL dokümanlarında commit() hakkında daha fazla bilgi edinin. 

Kodda dikkat edilmesi gereken diğer önemli noktalar şunlardır: 

  • NOT NULL: Bir sütunun NULL değerleri kabul etmemesini zorlayan bir kısıtlama. 
  • PRIMARY KEY: Bir tablodaki belirli satırları tanımlamak için kullanılan benzersiz değer. 
  • AUTO_INCREMENT: Tabloya eklenen yeni kayıtlar için otomatik olarak benzersiz bir sayı üretir. 

Şemamızın doğru oluşturulup oluşturulmadığını DESCRIBE ifadesini kullanarak ve ardından imleç nesnemiz üzerinde fetchall() yöntemiyle tüm öğeleri yazdırarak kontrol edebiliriz…

describe_books = "DESCRIBE books"
with existing_database.cursor() as cursor:
    cursor.execute(describe_books)
    books_schema = cursor.fetchall()
    for column in books_schema:
        print(column)

"""
('id', b'int', 'NO', 'PRI', None, 'auto_increment')
('title', b'varchar(100)', 'YES', '', None, '')
('author', b'varchar(100)', 'YES', '', None, '')
('genre', b'varchar(100)', 'YES', '', None, '')
('release_year', b'year', 'YES', '', None, '')
"""

Veri ekleme

Önceki bölümlerde, book_ratings veritabanımızda books adlı bir tablo oluşturduk. Şu anda bu tablo boş. Bir sonraki bölümde bir tabloyu doldurmak için elinizdeki iki yaklaşımdan bahsedeceğiz. 

Tek bir kayıt ekleme

Bazen bir tabloya tek bir kayıt eklemeniz gerekebilir. Gerçek dünyada bu nadir olsa da, yine de aşağıdaki gibi yapabilirsiniz:

# INSERT SINGLE RECORD
insert_single_record = "INSERT INTO books (id, title, author, genre, release_year)\
    VALUES (%s, %s, %s, %s, %s)"
single_record = (
    "1", "Choose Yourself! Be Happy, Make Millions, Live the Dream", "James Altucher", "self-help", "2013"
    )

# Create cursor object
with existing_database.cursor() as cursor:
    cursor.execute(insert_single_record, single_record)
    existing_database.commit()

Birden çok kayıt ekleme

Bir tabloya veri eklemenin daha yaygın yolu, imleç nesnesinin executemany(operation_to_perform, seq_of_params) yöntemini kullanmaktır; bu, aynı anda birden fazla kayıt eklemenizi sağlar. 

Yapmak istediğimiz işlemin yapısı aynı kalır; yalnızca parametreler dizisini güncelleriz. 

Koddaki görünümü şöyledir: 

multiple_records = [
    (
        "2",
        "Skip the Line: The 10,000 Experiments Rule and Other Surprising Advice for Reaching Your Goals",
        "James Altucher",
        "self-help",
        "2021"        
    ),
    (
        "3",
        "The Power of No: Because One Little Word Can Bring Health, Abundance, and Happiness",
        "James Altucher",
        "self-help",
        "2014"
    ),
    ]

with existing_database.cursor() as cursor:
    cursor.executemany(insert_multiple_records, multiple_records)
    existing_database.commit()

Veri seçme 

SELECT ifadesi, bir veritabanındaki bir veya daha fazla tablodan seçilen satırları almak için kullanılır. SELECT ifadesini iki şekilde kullanabiliriz: 

  1. Bir tablodan belirli sütunları seçmek.
select_specific_cols = "SELECT author, release_year FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_specific_cols)
  1. Tüm sütunları yıldız "*" kullanarak döndürmek
# Create cursor object
select_all_cols = "SELECT * FROM books"
with existing_database.cursor() as cursor:
    cursor.execute(select_all_cols)

Verileri Sıralama ve Filtreleme 

Verileri sıralamak ve filtrelemek, kayıtların karşılaması gereken belirli ölçütler sağlayarak ilgilendiğiniz sonuçları döndürmenizi sağlar. 

İşte birkaç örnek: 

WHERE

WHERE ifadesi, belirtilen bir koşula göre verileri filtrelemenizi sağlar. 

Örneğin, 2010 ve öncesinde yayımlanmış herhangi bir kitap için yazarın adını ve kitap başlığını çıkarmak istediğimizi varsayalım: 

condition = "SELECT author, title FROM books WHERE release_year <= 2010"
with existing_database.cursor() as cursor:
    cursor.execute(condition)

ORDER BY

ORDER BY ifadesini sonuçları artan (ASC) veya azalan (DESC) düzende sıralamak için de kullanabiliriz. Varsayılan kipin, aksi açıkça belirtilmedikçe her zaman artan sıra olduğunu unutmayın. 

Verilerimizi yayımlanma yılına göre azalan düzende şöyle sıralarız:

order_by_year = "SELECT * FROM books ORDER BY release_year DESC"
with existing_database.cursor() as cursor:
    cursor.execute(order_by_year)

LIMIT

LIMIT ifadesi, sonuç kümesinde döndürülecek kayıt sayısını belirtmenize olanak tanır.

# Create cursor object
define_limit = "SELECT * FROM books LIMIT 3"
with existing_database.cursor() as cursor:
    cursor.execute(define_limit)

Yukarıdaki kod, döndürülecek kayıt sayısını üçle sınırlar. 

Verileri Güncelleme ve Silme

Bazen veriler değişir, artık kullanışlı değildir veya yanlıştır. Bu bölümde, bu durumları güncellemeler ve silmeler ile nasıl yöneteceğinizi öğreneceksiniz. 

UPDATE

UPDATE sorgusu, bir tablonun yapısını etkilemeden mevcut değerleri değiştirmenize olanak tanır. 

Örneğin, biri adını değiştirirse bir kaydı güncellemeniz gerekebilir; kodda şöyle görünür:

update_query = """
UPDATE
    books
SET
    author = "Big J"
WHERE
    author = "James Altucher"
"""
with existing_database.cursor() as cursor:
    cursor.execute(update_query)
    existing_database.commit()

DELETE

DELETE sorgusu, bir tablodan bir kaydı silmenizi sağlar:

drop_record = "DELETE FROM books WHERE release_year <= 2000"
with existing_database.cursor() as cursor:
    cursor.execute(drop_record)
    existing_database.commit()

Bu kodda, yayımlanma yılı 2000 veya daha eski olan tüm kayıtları sildik. 

DROP TABLE

DROP TABLE ifadesi, bir tabloyu veritabanından kalıcı olarak kaldırmanızı sağlar. IF EXISTS eklemek, düşürmek istediğiniz tablonun var olup olmadığından emin olmadığınız senaryolara uyum sağlar ancak tamamen isteğe bağlıdır. 

book_ratings veritabanımızda oluşturduğumuz tabloyu kaldıralım: 

drop_table = "DROP TABLE IF EXISTS books"
with existing_database.cursor() as cursor:
    cursor.execute(drop_table)
    existing_database.commit()

Sonuç

Bu eğitimde, Python’da bir MySQL sunucusuyla nasıl bağlantı kurulacağını, yeni bir veritabanı oluşturmayı, mevcut bir veritabanına bağlanmayı, bir tablo oluşturmayı ve Python’dan bir MySQL tablosu üzerinde çeşitli sorgu işlemlerini yürütmeyi öğrendiniz.  

Öğrenmeye devam etmek için aşağıdaki kaynaklara göz atın:

Konular
SQL
Veri Bilimi
Python

SQL Kursları

Kurs

Orta Seviye Python

4 sa
1.4M
Matplotlib kullanarak görselleştirmeler oluşturarak ve pandas ile DataFrames'i manipüle ederek veri bilimi becerilerinizi geliştirin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör