Как игнорировать предупреждения pymysql? - PullRequest
0 голосов
/ 30 июня 2018

Рассмотрим этот код:

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 голосов
/ 30 июня 2018

Причина, по которой вы получаете эту ошибку, заключается в том, что ваше поле 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()

Для получения дополнительной информации ознакомьтесь с документами предупреждений

...