2009-02-14 21 views
12

SQLAlchemy kullanarak veritabanına yeni bir kayıt eklemeyi denediğimde ve tüm değerleri doldurmadığımda, bunları "Yok" (onları atlamak yerine) olarak eklemeyi dener. Daha sonra "null olamaz" hataları hakkında şikayet ediyor. Örneği bildirirken bunları atlamamış olsaydım sql sorgusundan sütunları çıkarması için bir yol var mı?SQLAçık ve boş sütunlar

cevap

13

Bu bir SQLAlchemy sorunu değil, bir veritabanı şeması sorunudur. Veritabanı şemanız NULL olmayan bir sütuna sahipse, oraya bir şey (yani Yok) koymalısınız. Veya şemanızı, bu sütunlarda NULL'a izin verecek şekilde değiştirin.

Vikipedi bir makale about NULL ve non-NULL constraints

39

Ali A'dan cevaba eklemek için açıklayan bir makale var, bu NULL'un sütununda izin böylece, sütun tanımında nullable=True olması gerektiği anlamına gelir. Örneğin:

email_address = Column(String, nullable=True) 

SQLAlchemy docs for Tables and Columns, v1.2 doktordan alıntı:

null - False olarak ayarlandığında, “NOT NULL” ifade sütun için DDL oluşturulurken eklendi olmasına yol açar . True olduğunda, normalde , "NULL" öğesinin açıkça görüntüleyebileceği bazı çok özel arkaya özgü kenar durumları dışında hiçbir şey (SQL varsayılan olarak "NULL" olarak) üretmez. Primer_key de True olduğu sürece, True değeri, durumunun varsayılan olarak False değerine ayarlanır. Bu parametre sadece CREATE TABLE deyimlerini verirken kullanılır.

+5

bu daha doğrudan soruyu yanıtlar. – 10flow