2009-02-14 30 views
12

Khi tôi cố gắng chèn một bản ghi mới vào cơ sở dữ liệu bằng cách sử dụng SQLAlchemy và tôi không điền vào tất cả các giá trị, nó cố gắng chèn chúng dưới dạng "Không" (thay vì bỏ qua chúng). Sau đó nó phàn nàn về lỗi "không thể null". Có cách nào để có nó chỉ bỏ qua cột từ truy vấn sql nếu tôi cũng bỏ qua chúng khi tuyên bố dụ?SQLAlchemy và các cột trống

Trả lời

13

Đây là vấn đề lược đồ cơ sở dữ liệu chứ không phải vấn đề về SQLAlchemy. Nếu lược đồ cơ sở dữ liệu của bạn có một cột không thể là NULL, bạn phải đặt một cái gì đó (tức là không có) vào đó. Hoặc thay đổi lược đồ của bạn để cho phép NULL trong các cột đó.

Wikipedia có bài viết about NULL và một bài báo trong đó mô tả non-NULL constraints

39

Để thêm vào các câu trả lời từ Ali A, điều này có nghĩa bạn cần phải có nullable=True trong định nghĩa cột của bạn, vì vậy NULL được phép trong cột. Ví dụ:

email_address = Column(String, nullable=True) 

SQLAlchemy docs for Tables and Columns, đoạn trích từ v1.2 doc:

nullable - Khi thiết lập để False, sẽ gây ra “NOT NULL” cụm từ được thêm khi tạo DDL cho cột . Khi True, bình thường, sẽ không tạo ra gì (trong SQL mặc định là “NULL”), ngoại trừ một số trường hợp đặc biệt là các cạnh cụ thể phụ trợ mà “NULL” có thể hiển thị một cách rõ ràng. Mặc định là True trừ khi primary_key cũng là True, trong đó trường hợp mặc định là False. Tham số này chỉ được sử dụng khi phát hành câu lệnh TẠO TẠO.

+5

điều này trực tiếp trả lời câu hỏi – 10flow

Các vấn đề liên quan