Как ограничить пустую строку по умолчанию при вставке строки в таблицу с помощью sqlalchemy? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь вставить строку в таблицу, используя sqlalchemy в моем приложении на флешку Python.Но если я не дал никаких значений столбцу, он автоматически вставляет пустую строку.Мне нужно ограничить это.Если нет / не имеет значения, мне нужно пропустить вставку.

Допустим, у меня есть такая таблица,

CREATE TABLE person(
    id int(11) AUTO_INCREMENT NOT NULL,
    name varchar(50) NOT NULL COMMENT 'Name',
    age int(4) NOT NULL COMMENT 'Age',
    sex ENUM('M','F') NOT NULL COMMENT 'sex',
    CONSTRAINT PK_PERSON PRIMARY KEY  (id ASC) 
)

data = {'name': 'xyz', 'sex': 'Z'} Я пытаюсь вставить строкуиспользование объекта json без некоторых значений / не относящихся к делу значений.В то время ему нужно выдать какое-то исключение, но автоматически оно принимает пустую строку.

Я искал почти везде, я не могу найти решение для этого.В табличной модели я также определил это так:

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    age = db.Column(db.Integer, nullable=False)
    sex = db.Column(db.String, nullable=False)

Но я не знаю, как оно автоматически принимает пустые строки.

Я вставляю данные вот так:

stmt = Person.__table__.insert().values(data)
       db.session.execute(stmt)
       db.session.commit()

Ожидаемый ответ: я ожидаю некоторых исключений для столбца пола, таких как недопустимые значения, и для возраста, я не дал никакого значения для ненулевого столбца, поэтому ожидаю исключения и для этого.

Фактический ответ: вставка без каких-либо исключений с использованием пустых строк

id | name | age | sex
1    xyz           

* Для возраста и пола значения являются пустыми строками

Помогите мне решить эту проблему.

...