处理空字符串的熊猫to_sql()和read_sql_query()

时间:2019-06-26 14:22:00

标签: python mysql pandas sqlalchemy

我有一个带字符串类型列的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服务器版本相对应的手册,以在第1行的'by =''和ds = 20190618'附近使用正确的语法“)
错误消息表明它已成功解析了sql查询字符串,但mysql似乎无法识别它。

1 个答案:

答案 0 :(得分:0)

您可以这样处理:

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

由于您的连接似乎期望用单引号引起来的文本,因此您可以将单引号转义并在字符串中使用它们。