python pandas read_csv boolean as string

时间:2017-03-14 12:48:49

标签: python sql-server pandas

问题很简单,但经过数小时的搜索后我无法找到解决方案。

我想读取csv文件,强制对象和布尔值到字符串,并将其写入SQL。但是,当将数据解析为MSSQL时,所有这些都可以工作,它将布尔值转换为字符串' 0'和' 1'而不是' TRUE'和' FALSE'。

见下面的代码:

pandasDF = pandas.read_csv(pathCSV, sep = ';')
emptyTable(session, tableName)
obj_cols = pandasDF.select_dtypes(include=[object, bool]).columns.values.tolist()
pandasDF.to_sql(tableName, engine, if_exists = 'append', dtype = {c: String for c in obj_cols}, index = False)

我认为最好的解决方案是让pandas.read_csv停止识别布尔数据类型,但是我无法找到如何实现这一点......

1 个答案:

答案 0 :(得分:0)

BOOL/BOOLEAN是MySQL中TINYINT(1)的同义词

实际值TRUEFALSE10的别名,请参阅此示例:

mysql> SELECT IF(0 = FALSE, 'true', 'false');
+--------------------------------+
| IF(0 = FALSE, 'true', 'false') |
+--------------------------------+
| true                           |
+--------------------------------+

mysql> SELECT IF(1 = TRUE, 'true', 'false');
+-------------------------------+
| IF(1 = TRUE, 'true', 'false') |
+-------------------------------+
| true                          |
+-------------------------------+

有关详细信息,请参阅MySQL reference 5.7