Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自定义utc now date函数返回相同的结果_Python_Postgresql_Sqlalchemy - Fatal编程技术网

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

Python 自定义utc now date函数返回相同的结果,python,postgresql,sqlalchemy,Python,Postgresql,Sqlalchemy,代码: 结果: 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

代码:

结果:

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]
问题:

我用的是炼金术上面的一层薄薄的东西。我遇到的问题是,现在utc在每个测试中返回相同的日期时间。

请使用时钟时间戳而不是现在-现在是事务开始时间,而不是语句:

现在,当前事务的当前日期和时间开始

时钟时间戳带有时区当前日期和时间的时间戳 语句执行过程中的更改


使用clock_timestamp而不是now-now是事务开始的时间,而不是statement您正在使用的测试框架是否将测试放在事务中以在测试后回滚?如果是这样的话,Postgres会在事务处理期间冻结时间,以提供一致的now@JimDeville似乎是这样,因为沃村评论解决了这个问题。
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" }>