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

问题描述 投票:0回答:1

我想将数据存储在从数据库中获取的numpy数组中。我想确保没有空值(None)转到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个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.