【问题标题】:SQL Server:为 Python/Pandas“bool”数据类型设置什么数据类型?
【发布时间】:2022-01-23 05:34:43
【问题描述】:

我有我想插入到 SQL Server 表中的列。 Python/Pandas 正确地检测到它是一个布尔列并为其分配一个数据类型:bool

它的前 20 个值的样本是:

array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False,  True, False,
       False, False])
dtype('bool')

如果我将此 Pandas 列分配给 SQL BIT 数据类型,则会出现插入错误:

(type mismatch or invalid character for the specified codepage)

这种类型的列的正确数据类型是什么?

【问题讨论】:

  • SQL Server 与bool 的“最接近”数据类型是bit,它可以存储10NULL(当NULLable 时)。
  • 能否创建一个函数或使用case语句转换为位?您几乎肯定会希望将比特存储在 SQL Server 中。

标签: python sql sql-server pandas


【解决方案1】:

在不知道您实际上是如何尝试将数据插入数据库的情况下很难回答。例如,您使用的是 ODBC Python 连接器 (pyodbc) 吗?

无论如何,在可用信息有限的情况下,您可以尝试将 bool 转换为整数:False -> 0,True -> 1。

根据使用的连接器,它可能不支持或不正确地将 Python 布尔映射到 SQL Server BIT。但大多数 SQL Server 连接器都可以将 int 映射到 BIT,只要值为 0 或 1(如果您的目标列可以为空,则为 NULL)

【讨论】:

    猜你喜欢
    • 2012-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 2011-11-16
    • 2015-12-06
    • 2011-08-08
    • 1970-01-01
    相关资源
    最近更新 更多