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

时间:2017-03-14 10:01:41

标签: python postgresql

我有一项任务是使用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_datedate值,因此如何将此None值转换为sql None或其他内容它可以存储在日期列中。

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

1 个答案:

答案 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

这是将Nonefrom 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);