SQLAlchemy Nedir?

SQLAlchemy Nedir?

SQLAlchemy Nedir? SQL ve Python kullanıcıları için bir ORM Object Relational Mapper aracıdır Veritabanı işlemlerini daha kolay hale getiren bu araç, CRUD Create, Read, Update, Delete işlemlerini kolaylıkla yapmanıza olanak sağlar SQLAlchemy, SQLite, MySQL, PostgreSQL gibi veritabanlarını destekler En iyi Python ORM araçlarından biri olduğu kabul edilmektedir Hemen deneyin ve veritabanı işlemlerindeki zorlukları ortadan kaldırın!

SQLAlchemy Nedir?

SQLAlchemy, Python programlama dili için yazılmış bir ORM (Object-Relational Mapping) kütüphanesidir. Bu kütüphane, SQL veritabanlarına erişmek ve verileri işlemek için kullanılır. SQLAlchemy, açık kaynak kodlu bir yazılımdır ve GNU Lesser General Public License (LGPL) ile lisanslıdır.

SQLAlchemy'nin temel özellikleri, veritabanına bağlanmak, tablolar oluşturmak, verileri eklemek, silmek ve güncellemek gibi işlemler yapmaktır. Ayrıca, ORM kullanarak nesne yönelimli programlama (OOP) üzerinden veritabanı işlemleri yapılabilir. Bu, geleneksel SQL sorguları yerine Python nesne yönelimli sorguları kullanarak daha kolay ve anlaşılır kod yazmayı mümkün kılar. SQLAlchemy, farklı veritabanı yönetim sistemleri ile uyumludur ve PostgreSQL için önemli bir yer sağlamaktadır.


PostgreSQL Nedir?

PostgreSQL, açık kaynak kodlu bir nesne ilişkisel veritabanı yönetim sistemi olarak kullanılan bir yazılımdır. PostgreSQL'in temel amacı, kullanıcıların verileri güvenli, geçerli ve tutarlı bir şekilde depolamasına yardımcı olmaktır.

PostgreSQL, ölçeklenebilir, güçlü ve çok yönlü bir RDBMS (Relational Database Management System) olarak kabul edilir. PostgreSQL'in özellikleri arasında yüksek performanslı ve karmaşık analitik sorgulama yetenekleri, gelişmiş uyumlu veri türleri, ANSI SQL standardı desteği ve geniş yedekleme seçenekleri gibi özellikler yer alır.

PostgreSQL, yüksek bir güvenlik seviyesi sunar ve aynı zamanda yüksek oranda yapılandırılabilir olması sebebiyle özellikle çok sayıda kullanıcının verileri yönettiği kurumsal ortamlarda tercih edilmektedir. Ayrıca, PostgreSQL, açık kaynak kodlu olması sebebiyle kullanıcıların ücretsiz olarak kullanmasına izin verir.

PostgreSQL, birçok platformda çalışabilen geniş bir destek yelpazesine sahiptir ve kullanıcıların geniş bir seçenek yelpazesi için birden fazla ara yüze sahip olmasını sağlar. PostgreSQL, hem yerel sürücü üzerinde hem de ağ üzerinden çalışan uygulamalar için uygun performansı sağlamaktadır.

Genel olarak, PostgreSQL, karmaşık ve büyük veritabanlarına sahip olanlar için ideal bir seçenek olabilir. MySQL, SQLite ve Oracle gibi diğer popüler veritabanı yönetim sistemleri ile karşılaştırıldığında PostgreSQL, kapsamlı özellikleri, yüksek performansı ve güvenilirliği sebebiyle son yıllarda popülerlik kazanmaktadır.


SQLAlchemy ile PostgreSQL Veritabanına Bağlanma

SQLAlchemy, Python dilinde yazılmış bir ORM (Object Relational Mapping) kütüphanesidir. PostgreSQL ise açık kaynak kodlu bir ilişkisel veritabanı yönetim sistemi olarak kullanılmaktadır. SQLAlchemy ile PostgreSQL veritabanına bağlanmak oldukça basit bir işlemdir.

Bir uygulama, veritabanına bağlanmak için create_engine() fonksiyonunu kullanır. Bu fonksiyona PostgreSQL veritabanı URL'si, kullanıcı adı ve şifresi gibi parametreler verilir.

Aşağıdaki örnek kodda, bir PostgreSQL veritabanına SQLAlchemy kullanarak bağlanma işlemi gösterilmektedir:

from sqlalchemy import create_engine# PostgreSQL veritabanı URL'siDB_URL = "postgresql://user:password@localhost/db_name"# create_engine() fonksiyonu kullanılarak veritabanına bağlanılırengine = create_engine(DB_URL)# bağlantı yapılırconnection = engine.connect()

Bağlantı yapıldıktan sonra, veritabanı hakkında detaylı bilgiler edinmek için inspect() fonksiyonu kullanılabilir. Örneğin:

from sqlalchemy import inspect# inspect() fonksiyonu kullanılarak veritabanı bilgileri alınırinspector = inspect(engine)# veritabanındaki tabloların isimleritable_names = inspector.get_table_names()# veritabanının şemasıschemas = inspector.get_schema_names()

Bir diğer yöntem ise, with komutu kullanarak bağlantıyı açmak ve işlem yapıldıktan sonra otomatik olarak kapatmak olacaktır. Örneğin:

with engine.connect() as connection:    # burada veritabanı işlemleri yapılır    ....

Gördüğünüz gibi, SQLAlchemy ile PostgreSQL veritabanına bağlanmak oldukça basit ve bu kütüphane sayesinde veritabanı işlemleri kolay bir şekilde gerçekleştirilebilir.


Konfigürasyon Ayarları

SQLAlchemy ve PostgreSQL'i birbirine bağlamak için öncelikle, yüklemeyi tamamladığınızdan emin olmalısınız. Her iki sistem için de gerekli olan sürücüleri ve modülleri yüklediğinizden emin olun. Daha sonra, veritabanına bağlanmanız gereken bilgileri tanımlamanız gerekir.

Bunun için SQLAlchemy'de "create_engine" fonksiyonunu kullanabilirsiniz. Bu fonksiyon, SQLAlchemy motorunu tanımlamanızı ve PostgreSQL veritabanına bağlanmanızı sağlar. "create_engine" fonksiyonu şu şekilde kullanılabilir:

from sqlalchemy import create_engineengine = create_engine('postgresql://user:password@localhost/')

Yukarıdaki kod örneğinde, 'user' ve 'password' yerine PostgreSQL veritabanı kullanıcınızın kimlik bilgilerini ve '' yerine bağlanmak istediğiniz PostgreSQL veritabanının adını yazmanız gerekir.

Ayrıca, PostgreSQL veritabanını farklı bir portta kullanıyorsanız, port numarasını da eklemeniz gerekir. Bunun için "create_engine" fonksiyonuna aşağıdaki parametreler eklenmelidir:

engine = create_engine('postgresql://user:password@localhost:/')

SQLAlchemy'de varsayılan olarak veritabanı adı "public" olarak belirlenir. Eğer PostgreSQL veritabanınızda farklı bir veritabanı adı kullanıyorsanız, bu adı da belirtmeniz gerekir:

engine = create_engine('postgresql://user:password@localhost/',                        connect_args={'options': '-csearch_path='})

Yukarıdaki kod örneğinde, PostgreSQL'de kullanılan veritabanı adı iki kez belirtilir.

SQLAlchemy ve PostgreSQL arasındaki bağlantıyı kurmak için başka ayarlar da yapılabilir. Bu ayarlardan bazıları:

  • Poolclass: Veritabanı bağlantısının nasıl yönetileceğini belirler
  • Pool_timeout: Veritabanı bağlantısının ne kadar süre bekleyebileceğini belirler
  • Pool_size: Veritabanı ile bağlantı kurulacak havuzun boyutunu belirler

Yukarıdaki ayarlar, "create_engine" fonksiyonuna parametre olarak verilebilir. Örneğin, aşağıdaki kod örneğinde, PostgreSQL veritabanı ile SQLAlchemy arasında 20 havuz bağlantısı açılması sağlanır:

engine = create_engine('postgresql://user:password@localhost/', pool_size=20)

Yukarıdaki ayarlar, SQLAlchemy ve PostgreSQL arasındaki bağlantının optimize edilmesine yardımcı olur. Bu ayarlar, veri tabanının boyutuna, kullanım sıklığına ve talep edilen kaynaklara bağlı olarak değiştirilebilir.


Tablo Oluşturma

SQLAlchemy ve PostgreSQL veritabanlarını kullanarak tablo oluşturma işlemi oldukça basittir. İlk önce, bir tablo oluşturmak için SQLAlchemy tarafından sağlanan "Table" sınıfını içeren bir nesne oluşturmanız gerekiyor. Bu sınıfın özellikleri arasında tablo adı, sütunlar ve ilgili türler yer alır.

Örneğin, şu kodu kullanarak "students" adlı bir tablo oluşturabilirsiniz:

```from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData

engine = create_engine('postgresql://username:password@localhost/mydatabase')metadata = MetaData()

students = Table('students', metadata, Column('id', Integer, primary_key=True), Column('name', String), Column('age', Integer), Column('gender', String))

metadata.create_all(engine)```

Bu örnekteki "create_engine()" fonksiyonunun bağlantı URL'sini değiştirmeniz gerekiyor. Aynı şekilde "students" nesnesini de kendi tablo adınızla değiştirebilirsiniz.

Yukarıdaki kod, "students" adlı bir tablo oluşturur ve bu tablonun sütunlarını tanımlar: "id", "name", "age" ve "gender". "Column" sınıfı, tabloya eklenecek sütunların özelliklerini tanımlar. "primary_key=True" ile belirtilen sütun, tablonun birincil anahtar sütunu olarak işaretlenir.

Son adım, "create_all()" fonksiyonunu kullanarak tabloyu PostgreSQL veritabanında oluşturmaktır. Bu fonksiyon, "metadata" nesnesinde tanımlanmış tüm tabloları otomatik olarak oluşturur.

Örnek veriler eklemek için "INSERT" SQL komutu yerine SQLAlchemy"N "insert()" fonksiyonu kullanabilirsiniz. Örneğin:

```from sqlalchemy import insert

conn = engine.connect()

insert_stmt = students.insert().values(name='John', age=25, gender='M')conn.execute(insert_stmt)```

Bu örnekte, "insert()" fonksiyonu kullanılarak "students" tablosuna "John" adlı bir öğrenci eklendi. "values()" fonksiyonu ile eklenen sütunlar belirtilir. "conn.execute()" fonksiyonu, SQL komutu yerine kullanılarak veri eklemeyi gerçekleştirir.

Tablolarda veri ekleme işlemleri yanı sıra, veri arama, silme ve güncelleme işlemleri de yapılabilir. SQLAlchemy, veri tabanı işlemlerini oldukça basit ve hızlı bir şekilde gerçekleştirir.


Sınflandırılmış Tablolar

Sınıflandırılmış tablolar, verileri belirli bir düzen ve kategoriye göre gruplandırmak için kullanılan bir yöntemdir. SQLAlchemy ve PostgreSQL kullanarak sınıflandırılmış tablolar oluşturmak için öncelikle metadata objesi kullanılır. Bu nesne, veritabanındaki tabloları ve sütunları tanımlar.

Örneğin, bir müzik uygulaması için sınıflandırılmış bir tablo oluşturmak isteyebilirsiniz. genres adlı bir tablo oluşturarak, her bir müzik türünü ayrı bir sütunda gruplayabilirsiniz. Tablo oluşturma işlemi için öncelikle Table() fonksiyonu kullanılır:

from sqlalchemy import Table, Column, Integer, String, MetaDatametadata = MetaData()genres = Table('genres', metadata,                      Column('id', Integer, primary_key=True),                      Column('genre_name', String),                      Column('description', String)                      )

Bu kod parçası, genres adında bir tablo oluşturur ve sütunları id, genre_name ve description olarak tanımlar. Daha sonra, bu tabloya veri eklemek için INSERT sorguları kullanılabilir. Örneğin:

from sqlalchemy import create_engineengine = create_engine('postgresql://user:password@localhost/mydatabase')conn = engine.connect()ins = genres.insert()values = [{'genre_name': 'Rock', 'description': 'A genre of popular music that originated as "rock and roll" in the United States in the 1950s'},          {'genre_name': 'Pop', 'description': 'A genre of popular music that originated in its modern form in the Western world during the 1950s and 1960s'},          {'genre_name': 'Hip-Hop', 'description': 'A genre of popular music that originated in African American and Latinx communities in the United States during the 1970s'}          ]conn.execute(ins, values)

Bu kod parçası, genres tablosuna üç müzik türü ekler: Rock, Pop ve Hip-Hop. Bu örnek, sınıflandırılmış tabloların nasıl kullanılacağı hakkında sadece temel bir anlayış sağlar. Tam bir sınıflandırılmış tablo örneği için PostgreSQL ve SQLAlchemy belgelerine başvurabilirsiniz.