
在 Python 中处理数据库查询结果时,经常会遇到 NULL 值,也就是 Python 中的 None。特别是在将数据转换为 JSON 格式返回时,需要将 None 转换为合适的值,例如空字符串 "" 或数值 0.00。原始代码的问题在于,isinstance 的判断在 item is None 的情况下永远不会执行,因为 None 不是任何类型的实例。
以下是经过修改和优化的 format_item 函数,它能正确处理 None 值,并将其转换为合适的类型:
from decimal import Decimal
def format_item(item):
if item is None:
# 根据需要返回默认值:空字符串或 0.00
return 0.00 # 或者 ""
elif isinstance(item, (Decimal, float)):
return float(item)
else:
return str(item)代码解释:
注意事项:
立即学习“Python免费学习笔记(深入)”;
将上述 format_item 函数应用到数据库查询结果的转换过程中:
import mysql.connector
import os
import json
import logging
from dotenv import load_dotenv
from decimal import Decimal
def get_db_password(rds_host):
# Replace this with your actual password retrieval logic
return "your_db_password"
def format_item(item):
if item is None:
# 根据需要返回默认值:空字符串或 0.00
return 0.00 # 或者 ""
elif isinstance(item, (Decimal, float)):
return float(item)
else:
return str(item)
def stored_procedure_call(SP_name, id, entity):
logging.info(f"Fetching DB connection details.")
try:
# Load env file
load_dotenv()
# Create the connection object
conn = mysql.connector.connect(
user=os.getenv('USER_NAME'),
password=get_db_password(os.getenv('RDS_HOST')),
host=os.getenv('RDS_HOST'),
database=os.getenv('DB_NAME'),
port=os.getenv('PORT'))
# Create a cursor
cursor = conn.cursor()
except Exception as error:
logging.error("An unexpected error occurred: {}".format(error))
return {
'statusCode': 500,
'body': json.dumps(f"Error connecting to database: {error}")
}
try:
# Call the stored procedure with the provided ID
cursor.callproc(SP_name, [id, entity])
conn.commit()
result_list = []
for result in cursor.stored_results():
rows = result.fetchall()
for row in rows:
result_list.append(list(row))
logging.info(row)
if not result_list:
return {
'statusCode': 200,
'body': json.dumps([])
}
result_list_serializable = [list(format_item(item) for item in tup) for tup in result_list]
return {
'statusCode': 200,
'headers': {
'Content-Type': 'application/json'
},
'body': json.dumps(result_list_serializable)
}
except Exception as e:
logging.error(f"Error executing stored procedure: {e}")
return {
'statusCode': 500,
'body': json.dumps(f"Error executing stored procedure: {e}")
}
finally:
if conn:
cursor.close()
conn.close()代码解释:
总结:
通过使用 format_item 函数,可以有效地处理数据库查询结果中的 None 值,并将其转换为合适的类型,从而避免在后续处理过程中出现错误。 确保在处理数据库查询结果时,始终考虑到 NULL 值的存在,并采取适当的措施来处理它们。 这对于确保数据的完整性和应用程序的稳定性至关重要。
以上就是正确处理 Python 中的 NULL 值:字符串与浮点数的转换的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号