如何防止插入NULL值而引发异常?

问题描述 投票:0回答:1

运行这段代码后,数据将被插入到数据库中,当我检查数据库时,发现添加了一条记录,其值为:int_field=0,other="" (空字符串)

我的问题是如何在Nullempty插入的情况下抛出异常。

from datetime import datetime

db = pw.MySQLDatabase('tests', user = 'root', password = 'root', host = 'localhost', port = 3306)

class Model(pw.Model):
name = pw.CharField()
created_at = pw.DateTimeField(default = datetime.now())
other = pw.CharField(null = False)
int_field = pw.IntegerField(null = False)

class Meta:
    database = db
    db_table = 'nmodel'
Model.create_table()
Model.create(name = "tests")
peewee
1个回答
0
投票

它是一个MySQL strict_mode 问题,你应该启用它在peewee数据库实例像下面。

添加这个(sql_mode='STRICT_ALL_TABLES')到constrcutor调用中。

db=pw.MySQLDatabase('database_name', user='user_name', password='user_psswd',
                              host='host_name', port=port_num,sql_mode='STRICT_ALL_TABLES') 

当传递空值时,这将抛出一个mysql异常。


0
投票

我想你需要将你的 sql_mode 要更加严格。请看

https:/dev.mysql.comdocrefman8.0ensql-mode.html#sql-mode-setting。

具体来说,我想你遇到的是。

https:/dev.mysql.comdocrefman8.0ensql-mode.html#sqlmode_no_auto_value_on_zero。

© www.soinside.com 2019 - 2024. All rights reserved.