SQLAlchemy的DateTime类型允许timezone=True参数将非天真的日期时间对象保存到数据库,并返回它.有没有办法修改tzinfoSQLAlchemy传入的时区,所以它可能是,例如,UTC?我意识到我可以使用default=datetime.datetime.utcnow; 然而,这是一个天真的时间,很乐意接受有人在一个天真的基于timezone=True本地时间的日期时间,即使我使用它,因为它使本地或UTC时间不天真没有基准时区来规范化它.我已经尝试过(使用pytz)使日期时间对象不天真,但是当我将它保存到数据库时,它又回归天真.
注意datetime.datetime.utcnow如何不能timezone=True很好地工作:
import sqlalchemy as sa
from sqlalchemy.sql import select
import datetime
metadata = sa.MetaData('postgres://user:pass@machine/db')
data_table = sa.Table('data', metadata,
sa.Column('id', sa.types.Integer, primary_key=True),
sa.Column('date', sa.types.DateTime(timezone=True), default=datetime.datetime.utcnow)
)
metadata.create_all()
engine = metadata.bind
conn = engine.connect()
result = conn.execute(data_table.insert().values(id=1))
s = select([data_table])
result = conn.execute(s)
row = result.fetchone()
Run Code Online (Sandbox Code Playgroud)
(1,datetime.datetime(2009,1,6,0,9,36,891887))
row[1].utcoffset()
Run Code Online (Sandbox Code Playgroud)
datetime.timedelta(-1,64800)#这是我的本地时间偏移!!
datetime.datetime.now(tz=pytz.timezone("US/Central"))
Run Code Online (Sandbox Code Playgroud)
datetime.timedelta(-1,64800)
datetime.datetime.now(tz=pytz.timezone("UTC"))
Run Code Online (Sandbox Code Playgroud)
datetime.timedelta(0)#UTC
即使我将其更改为显式使用UTC:
...
data_table = sa.Table('data', metadata,
sa.Column('id', sa.types.Integer, primary_key=True),
sa.Column('date', sa.types.DateTime(timezone=True), default=datetime.datetime.now(tz=pytz.timezone('UTC')))
) …Run Code Online (Sandbox Code Playgroud) 我想在python中复制它:
gvimdiff <(hg cat file.txt) file.txt
Run Code Online (Sandbox Code Playgroud)
(hg cat file.txt输出最近提交的file.txt版本)
我知道如何将文件传递给gvimdiff,但它不会接受另一个文件:
$ hg cat file.txt | gvimdiff file.txt -
Too many edit arguments: "-"
Run Code Online (Sandbox Code Playgroud)
进入python部分......
# hgdiff.py
import subprocess
import sys
file = sys.argv[1]
subprocess.call(["gvimdiff", "<(hg cat %s)" % file, file])
Run Code Online (Sandbox Code Playgroud)
当子过程被称为它仅仅传递<(hg cat file)到gvimdiff作为文件名.
那么,有没有办法像bash那样重定向命令?为简单起见,只需捕获一个文件并将其重定向到diff:
diff <(cat file.txt) file.txt
Run Code Online (Sandbox Code Playgroud) python ×2
bash ×1
datetime ×1
diff ×1
postgresql ×1
redirect ×1
sqlalchemy ×1
timezone ×1
vimdiff ×1