检查从 SQL 数据库获取的数据中的空值

Check null values in data fetched from SQL database

我想将数据存储在从数据库中获取的 numpy 数组中。我想确保没有空值 (None) 进入 numpy 数组(无论如何都会抛出错误)。我尝试通过以下方式进行操作,但它不起作用。出于某种原因,NullValueCheck() 始终 returns true 我如何了解空值并对其采取措施?

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)

编辑: 事实证明,我不必编写所有这些代码。我可以使用 pandas dataframe 实现相同的效果,我想从 numpy array.

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)

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

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

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