Панды to_sql () и read_sql_query () имеют дело с пустой строкой - PullRequest
0 голосов
/ 26 июня 2019

У меня есть df со столбцом строкового типа, и ячейка может быть пустой строкой "" (без пробела между).Я хочу записать df в mysql следующим образом:

df.to_sql(name, conn)

, а затем я хочу запросить df и отфильтровать ячейки с пустой строкой, как:

sql = 'select * from <tabname> where col = "" '
df = pd.read_sql_query(sql, conn)

однако,он выдаст ошибки:
(pymysql.err.ProgrammingError) (1064, «У вас ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему версии вашего сервера MariaDB, для правильного синтаксиса, который можно использовать рядом с \" by = ""и ds = 20190618 \ 'в строке 1')
Я пытался использовать как:

sql = "select * from <tabname> where col = '' "
<or>
sql = 'select * from <tabname> where col = \'\'' . 
<or> 
sql = 'select * from <tabname> where col = {0}'.format('')

, но ни один не работал:
(pymysql.err.ProgrammingError) (1064," Выесть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с 'by =' 'и ds = 20190618' в строке 1 ")
сообщение об ошибке показало, что он успешно проанализировал строку запроса sql , но, похоже, mysql его не распознал.

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете сделать это так:

sql = 'select * from <tabname> where col = \'\' '

Поскольку ваше соединение ожидает одноквартирный текст, вы можете избежать одинарных кавычек и использовать их внутри строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...