如何忽略pymysql警告?
How to ignore pymysql warnings?
考虑这段代码:
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 警告?
您收到该错误的原因是您的 salt
字段不允许 NULL 值,但您试图插入它们,可能是您的 table 创建 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
考虑这段代码:
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 警告?
您收到该错误的原因是您的 salt
字段不允许 NULL 值,但您试图插入它们,可能是您的 table 创建 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