【问题标题】:Check null values in data fetched from SQL database检查从 SQL 数据库获取的数据中的空值
【发布时间】:2018-03-02 10:45:47
【问题描述】:

我想将数据存储在从数据库中获取的 numpy 数组中。我想确保没有空值(无)进入 numpy 数组(无论如何都会引发错误)。我尝试按照以下方式进行操作,但它不起作用。由于某种原因,NullValueCheck() 总是返回 true 我如何知道 null 值并对其进行处理?

import numpy as np
import pyodbc as odbc

cnxn = odbc.connect(conn_string)
cursor = cnxn.cursor()
cursor.execute("""SELECT ID, BuildingID, Title FROM Something"""")

rows = cursor.fetchall()
cnxn.close()

ID = [i[0] for i in rows]
buildingID = [i[1] for i in rows]
title = [i[2] for i in rows]

def NullValueCheck(rows):
     if (any(elem is None for elem in rows[0])):
         return True
     else:
         return False

if NullValueCheck(rows):
    ID_array = np.fromiter(ID, dtype= np.int32)

编辑: 事实证明,我不必编写所有代码。我可以使用我想从 numpy 数组中实现的 pandas 数据框来实现相同的目标。

import pandas as pd
import pyodbc as odbc

cnxn = odbc.connect(conn_string)
df = pd.io.sql.read_sql("""SELECT ID, BuildingID, Title FROM Something""", cnxn)

【问题讨论】:

    标签: python-3.x numpy pyodbc


    【解决方案1】:

    我发现这在您的源 SQL 中最容易解决。 COALESCE 在这里很有帮助:

    df = pd.io.sql.read_sql("""SELECT ID, COALESCE(BuildingID, 0) AS BuildingID, Title FROM Something""", cnxn)
    

    如果BuildingID 的值为NULL,这将返回0。不同的 SQL 数据库都有特定的 NULL 检查功能(例如,SQL Server 中的ISNULL,MySQL 中的IFNULL),但COALESCE 是跨数据库兼容性最强的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 2021-05-19
      • 2015-12-10
      • 1970-01-01
      • 2020-10-03
      • 2020-03-14
      • 2014-06-07
      相关资源
      最近更新 更多