2013-06-27 16 views
5

Bir datetime olarak tanımlanan 'test_time' sütununa sahip test kayıtları veritabanına sahibim. Test sonuçlarını csv'ye tarihlere göre dökmek istediğim kaç farklı tarih olduğunu sorgulamak istiyorum. Şimdi şu var:seçili datetime tarihini sqlalchemy olarak dönüştürün

distinct_dates = list(session.query(Test_Table.test_time).distinct()) 

Ancak, bu bana tarihin bir tarih bilgisini verir. Kesinlikle Python'da ama sqlite kullanıyorum. Bunu SELECT DISTINCT DATE(test_time) FROM Test_Table yaptım. Ben sqlalchemy'de eşdeğer ile gelemem. ifadesini "dökme" kullanarak olacağını

cevap

9

:

distinct_dates = list(session.query(cast(Test_Table.test_time, DATE)).distinct()) 

DÜZENLEME: Bu kullanarak biter hayal ediyorum sourcecode bakmadan

distinct_dates = list(session.query(func.DATE(Test_Table.test_time)).distinct()) 
+0

: Tamam, bu bir deneyelim sql içindeki DATE() ifadesi ... bunu yapmadığı bir olasılık var, ama ben de sqlalchemy'e inancım var. –

+0

Daha önce 'cast' denedim. Ancak sqlalchemy her zaman bana bu istisna atar: 'ValueError: Tarih dizesi '2013' ayrıştırılamadı - değer bir string.' – foresightyj

+0

Ben neden anladım görünüyordu. Sqlite kullanıyorum. Ben sqlachemy yankı açık ve gerçek sorgu 'SELECT DISTINCT CAST (test_table.test_time AS DATE) AS anon_1 FROM test_table' olarak. Ve sqlite DATE'yi desteklemiyor gibi görünüyor. Bütün tarihi geri vermek yerine, sadece yıl döner. Teşekkürler! – foresightyj