SQLAlchemy ile bir Tablo’dan veri seçme
Şimdiye kadar harika gidiyorsun! Artık SQLAlchemy kullanarak ilk select ifadeni kurma zamanı. SQLAlchemy, veritabanlarıyla etkileşim kurmak için hoş, “Pythonik” bir yol sunar. Bir önceki egzersizde ham SQL kullandığında veritabanını doğrudan sorgulamıştın. SQLAlchemy kullanırken ise bunun yerine bir Table nesnesi üzerinden gidersin ve SQLAlchemy sorgunu senin için uygun bir SQL ifadesine dönüştürür. Böylece MySQL veya PostgreSQL gibi geleneksel SQL’in belirli diyalektleri arasındaki farklarla uğraşmak yerine, iş akışını sadeleştirmek ve verini daha verimli sorgulamak için SQLAlchemy’nin Pythonik çerçevesinden yararlanabilirsin. Bu nedenle, geleneksel SQL’e zaten aşina olsan bile öğrenmeye değer.
Bu egzersizde, yine census tablosundaki tüm kayıtları sorgulayan bir ifade oluşturacaksın. Ancak bu kez, sqlalchemy modülünün select() fonksiyonunu kullanacaksın. Bu fonksiyon, yalnızca bir tane zorunlu argüman alır: tabloların veya sütunların bir listesi. Örneğin, select([my_table]).
Ayrıca, ResultProxy içinden yalnızca birkaç kaydı almak için, kaç kayıt getirileceğini belirleyen size argümanıyla .fetchmany() kullanacaksın.
Table ve MetaData zaten içe aktarıldı. Üstveri metadata olarak, veritabanına bağlantı ise connection olarak hazır.
Bu egzersiz, kursun bir parçasıdır
Python ile Veritabanlarına Giriş
Egzersiz talimatları
sqlalchemymodülündenselectfonksiyonunu içe aktar.censustablosunu yansıt (reflect). Bu kod senin için yazıldı.censustablosundaki tüm kayıtları almak içinselect()fonksiyonunu kullanarak bir sorgu oluştur. Bunu yapmak içinselect()fonksiyonuna tek bir öğe içeren bir liste geçir:census.- Oluşturulan gerçek SQL sorgusunu görmek için
stmtifadesini yazdır. Bu kod senin için yazıldı. censustablosundan 10 kayıt getir veresultsiçinde sakla. Bunu yapmak için:ResultProxyelde etmek üzereconnectionüzerinde.execute()metodunustmtargümanıyla kullan.ResultSetelde etmek içinconnection.execute(stmt)üzerinde uygunsizeargümanıyla.fetchmany()kullan.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)