自定义utc now date函数返回相同的结果

2024-04-20 03:22:35 发布

您现在位置:Python中文网/ 问答频道 /正文

代码:

def setup_function(function):
    db.query('''
    CREATE OR REPLACE FUNCTION now_utc() RETURNS timestamp as $$
      select now() at time zone 'utc';
    $$ language sql;
    ''')

def teardown_function(function):
    db.query('DROP FUNCTION now_utc();')

def test_one ():
    print datetime.datetime.utcnow(), db.query('select now_utc();')[0]
    time.sleep(5)
    print datetime.datetime.utcnow(), db.query('select now_utc();')[0]

def test_two ():
    print datetime.datetime.utcnow(), db.query('select now_utc();')[0]
    time.sleep(5)
    print datetime.datetime.utcnow(), db.query('select now_utc();')[0]

结果:

test_one:
2017-02-28 15:51:19.962640 <Record {"now_utc": "2017-02-28T15:51:19.962945" }>
2017-02-28 15:51:24.974434 <Record {"now_utc": "2017-02-28T15:51:19.962945" }>

test_two:
2017-02-28 15:51:24.999673 <Record {"now_utc": "2017-02-28T15:51:25.000101" }>
2017-02-28 15:51:30.007059 <Record {"now_utc": "2017-02-28T15:51:25.000101" }>

问题:

我用的是Records,这是炼金术上面的一层薄薄的东西。我遇到的问题是现在在每个测试中返回相同的datetime。你知道吗


Tags: testdbdatetimetimedeffunctionrecordquery
1条回答
网友
1楼 · 发布于 2024-04-20 03:22:35

请用clock_timestamp()代替now()-now()是事务开始的时间,而不是语句。Docs

now() Current date and time (start of current transaction)

clock_timestamp() timestamp with time zone Current date and time (changes during statement execution);

相关问题 更多 >