【问题标题】:How to ignore pymysql warnings?如何忽略 pymysql 警告?
【发布时间】:2018-12-09 08:31:23
【问题描述】:

考虑这段代码:

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设置一个默认值,可以是空的,nullbanana

标签: python python-3.x warnings pymysql


【解决方案1】:

您收到该错误的原因是您的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    相关资源
    最近更新 更多