Bir kişi tablosunu saran, Person adında bir ORM sınıfım var:
DB vb. ile bağlantıyı kurduktan sonra, şu ifadeyi çalıştırıyorum:
people = session.query(Person).all()
Kişi tablosu (henüz) herhangi bir veri içermiyor, bu yüzden yazdırdığımda people
değişkeni, boş bir liste alıyorum.
ORM sınıfım People
içinde başvurulan tabloyu people_foo (mevcut değil).
Ardından betiği yeniden çalıştırıyorum. Var olmayan bir tabloya erişmeye çalışırken herhangi bir istisna atılmamasına şaşırdım.
Bu nedenle şu 2 sorum var:
- SQLAlchemy'yi nasıl kurabilirim? db hatalarını betiğe geri yayıyor mu?
- db motoruna gönderilen SQL'i nasıl görebilirim (yani yazdırabilirim)?
İşe yararsa PostgreSQL kullanıyorum.
[Düzenle]
Bir paket yazıyorum. __main__.py
komut dosyamda şu kod var (burada kısaltılmıştır):
### __main__.py import ortak # imports günlük kaydı ve günlük kurulum işlevlerini tanımlar etc logger = logging.getLogger(__name__) def main(): ayrıştırıcı = OptionParser(usage="%prog [options] <commands>", version="%prog 1.0") komutları = OptionGroup(ayrıştırıcı, "komutlar") parser.add_option( "-l", "--logfile", hedef="logfile", metavar="FILE", help="DOSYA'ya giriş yapın. ayarlanmazsa, günlük kaydı yapılmaz") parser.add_option( " --level", dest="loglevel", metavar="LOG LEVEL", help="Debug level. ayarlanmazsa, level varsayılan olarak düşük olur" ) # Belirtilmemişse, options.loglevel: loglevel = 1 else: loglevel = options.loglevel değilse options.logfile: logfilename = "datafeed.log" other: logfilename = options.logfile common.setup_logger(False, logfilename, loglevel) # ve benzeri ... #### dbfuncs. py import logging # __main__.py logging.getLogger("sqlalchemy.engine").se dosyasındaki günlükçüye nasıl "bağlanacağından" emin değil tLevel(logging.INFO) motor = create_engine("postgres://postgres:[email protected]:port/dbname", echo=True)
[Düzenle2]
Common modülü, logger'ı doğru bir şekilde ayarlar ve logger'ı ortak içe aktaran diğer modüllerimde kullanabilirim.
Ancak dbfuncs
modülünde, ben şu hatayı/uyarıyı alıyorum:
kaydedicisi için hiçbir işleyici bulunamadı"sqlalchemy.engine.base.Engine