gpt4 book ai didi

python - 如何在 outputtypehandler 中更改 datetime.date 类型?

转载 作者:行者123 更新时间:2023-12-04 08:23:40 26 4
gpt4 key购买 nike

是否可以将使用 Python 的 Cx_Oracle 从 outputtypehandler 返回的日期时间数据类型更改为字符串类型(格式 yyyymmdd)?

def OutputTypeHandler(cursor, name, defaultType, size, precision, scale):
if defaultType in (cx_Oracle.DB_TYPE_TIMESTAMP, cx_Oracle.DB_TYPE_DATE):
return cursor.var(datetime.date,cursor.arraysize)

最佳答案

编码:

def output_type_handler(cursor, name, default_type, size, precision, scale):
if default_type in (cx_Oracle.DB_TYPE_TIMESTAMP_TZ, cx_Oracle.DB_TYPE_DATE):
return cursor.var(cx_Oracle.STRING, arraysize=cursor.arraysize)

connection.outputtypehandler = output_type_handler

with connection.cursor() as cursor:
sql = """alter session set nls_date_format = 'YYYYMMDD' nls_timestamp_tz_format = 'YYYYMMDD'"""
cursor.execute(sql)

sql = """select systimestamp, sysdate from dual"""
for r in cursor.execute(sql):
print(r)
有输出:
('20201221', '20201221')
如果您依赖上述客户端 NLS 日期格式设置,请不要忘记使用 session callback使用 session 池执行 ALTER 语句。但在 SQL 查询本身中对 YYYYMMDD 进行格式化可能更明智。
如果您有其他时区类型,则需要更新输出类型处理程序 if测试和 ALTER 语句。

关于python - 如何在 outputtypehandler 中更改 datetime.date 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65376907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com