我有一项任务是使用python语言中的psycopg2库将数据从一个db表复制到另一个db表。
现在从第一个db中获取一行后,我必须将该行插入第二个db表中,但我面临的问题是我需要格式化查询并从变量中插入日期列的值,这可能是也可能是没有日期值,所以我的查询如下:
Item | Category
A | 1
A | 1
A | 1
A | 1
A | 1
A | 1
A | 1
B | 2
B | 2
B | 2
B | 2
B | 2
B | 2
B | 2
B | 2
B | 2
现在cur.execute("""update table_name set column1 = '%s', column2 = '%s',column_date = '%s'""" % (value1, value2, value_date))
可能是value_date
或date
值,因此如何将此None
值转换为sql None
或其他内容它可以存储在日期列中。
注意:考虑null
,value1
和value2
是包含值的变量。
答案 0 :(得分:2)
Psycopg将Python null
调整为Postgresql cur.execute("""
update t1
set column1 = t2.c1, column2 = t2.c2, column_date = t2.c3
from t2
where t1.pk = t2.pk
"""
。没有必要做任何事情。如果Python端没有处理,则跳过该步骤并直接在表之间更新:
date
这是将None
和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())
传递给Psycopg的方法:
update t
set (date_1, date_2) = ('2017-03-16'::date, NULL)
(datetime.date(2017, 3, 16), None)
输出:
$username = 'user';
$password = 'pwd';
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, 'https://www.example.com/token');
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl_handle, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);