我正在尝试在python flask应用程序中使用sqlalchemy将行插入表中。但是,如果我没有为列提供任何值,那么它将自动插入空字符串。我需要限制它。如果没有/无关的值,我需要使插入失败。
假设我有一个这样的桌子,
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()
预期的响应: 我希望性别列有一些例外,例如不可接受的值,而对于年龄,我没有为非null列提供任何值,所以也期待有例外。
实际回答: 它使用空字符串插入而没有任何异常
id | name | age | sex
1 xyz
*对于年龄和性别,这些值为空字符串
帮我解决这个问题。