如何忽略pymysql警告?

时间:2018-06-30 09:41:21

标签: python python-3.x pymysql

考虑以下代码:

import pymysql

db= pymysql.connect("localhost","root","","raspi")
cursor = db.cursor()
cursor.execute("INSERT INTO access(username)VALUES('hello')")
db.commit()
db.close()

当我运行它时,会出现此错误:

C:\Python36\lib\site-packages\pymysql\cursors.py:165: Warning: (1364,"Field'salt' doesn't have a default value")result = self._query(query)

如何忽略pymysql警告?

1 个答案:

答案 0 :(得分:9)

之所以会出现此错误,是因为您的salt字段不允许使用NULL值,但您尝试插入它们,可能是您的表创建sql代码看起来像这样:

CREATE TABLE `access` (
    `username` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
    ...
    `salt` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci'
)
COLLATE='utf8_unicode_ci'
ENGINE=InnoDB
;

如果您只想允许该字段为NULL值,则可能需要将您的SQL代码更改为以下内容:

...
`salt` VARCHAR(50) NULL COLLATE 'utf8_unicode_ci'
...

无论如何,如果您仍然坚持保持原始的数据库结构并想学习如何过滤掉警告,则可以通过以下一种可行的方法来实现:

import pymysql
import warnings


db = pymysql.connect("localhost", "root", "", "raspi")

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    cursor = db.cursor()
    cursor.execute("INSERT INTO access(username)VALUES('hello')")
    db.commit()
    db.close()

有关更多信息,请查看warnings docs