gpt4 book ai didi

python - 如何在日期列的 sql 格式查询字符串中设置日期值或空值

转载 作者:行者123 更新时间:2023-11-29 14:37:05 26 4
gpt4 key购买 nike

我的任务是使用 python 语言中的 psycopg2 库将数据从一个数据库表复制到另一个数据库表。

现在从第一个数据库中获取一行后,我必须将该行插入到第二个数据库表中,但我面临的问题是我需要格式化查询并从一个可能或可能的变量中插入日期列的值没有日期值,所以我的查询如下所示:

cur.execute("""update table_name set column1 = '%s', column2 = '%s',column_date = '%s'""" % (value1, value2, value_date))

现在 value_date 可能是一个 date 或一个 None 值,那么如何转换这个 None 将值设为 sql null 或其他内容,以便它可以存储在日期列中。

注意:考虑到value1value2value_date是包含值的变量。

最佳答案

Psycopg 将 Python None 适配为 Postgresql null。没有必要做任何事情。如果 Python 端没有处理,请跳过该步骤并直接在表之间更新:

cur.execute("""
update t1
set column1 = t2.c1, column2 = t2.c2, column_date = t2.c3
from t2
where t1.pk = t2.pk
"""

这是将 dateNone 传递给 Psycopg 的方法:

from datetime import date

query = '''
update t
set (date_1, date_2) = (%s, %s)
'''
# mogrify returns the query string
print (cursor.mogrify(query, (date.today(), None)).decode('utf8'))
cursor.execute(query, (date.today(), None))

query = 'select * from t'
cursor.execute(query)
print (cursor.fetchone())

输出:

update t
set (date_1, date_2) = ('2017-03-16'::date, NULL)

(datetime.date(2017, 3, 16), None)

关于python - 如何在日期列的 sql 格式查询字符串中设置日期值或空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42782847/

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