检查从 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
是跨数据库兼容性最强。
我想将数据存储在从数据库中获取的 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
是跨数据库兼容性最强。