繁体   English   中英

无法使用sqlalchemy在Postgresql上将字符串转换为时间戳。 我尝试了所有可能的方法,但似乎没有任何效果

[英]Unable to convert string to timestamp on postgresql with sqlalchemy. I have tried all possible ways but nothing seems to work

我正在使用Postgresql作为数据库的Flask项目。 我有一个称为兴趣的模式,看起来像

create table interest(
usr int,
activity_category int,
activity_subcategory int, 
pid int,
start_time timestamp,
end_time timestamp,
budget int check (budget >= 0),
primary key (usr, activity_category, activity_subcategory, pid, start_time, end_time),
foreign key (usr) references users(userid),
foreign key(pid, activity_category, activity_subcategory) references location(pid, aid, aaid)

);

我正在尝试将值插入兴趣表。 目前,我将开始时间和结束时间作为字符串,但是我想我需要以某种方式将它们转换为时间戳。 我已经尝试了这两种方法,但是它们都不起作用。

entry_by_location = g.conn.execute("insert into interest(usr, activity_category, activity_subcategory, pid, start_time, end_time, budget) values (%d, %d, %d, %d, to_timestamp(%s::text, 'YYYY-MM-DD HH:MI'), to_timestamp(%s::text, 'YYYY-MM-DD HH:MI'), %d)" %(int(uid), int(aaid), int(aid), int(pid), starttime, endtime, budget))

entry_by_location = g.conn.execute("insert into interest(usr, activity_category, activity_subcategory, pid, start_time, end_time, budget) values (%d, %d, %d, %d, %s::timestamp, %s::timestamp, %d)" %(int(uid), int(aaid), int(aid), int(pid), starttime, endtime, budget))

我得到的错误是-

ProgrammingError:(psycopg2.ProgrammingError)语法错误为“ 10” LINE 1或附近:... end_time,budget)值(1、2、7、1、2016-11-15 10:13 :: tim ... ^ [SQL:'插入兴趣值(usr,activity_category,activity_subcategory,pid,start_time,end_time,预算)值(1、2、7、1、2016-11-15 10:13 :: timestamp,2016-10-15 11 :24 :: timestamp,1000)']

我花了两天时间试图解决这个问题。 任何帮助将不胜感激。

谢谢!

在错误消息中,很明显,在10附近有一个错误。 也就是说,由于日期和时间之间存在空格,因此sql无法识别2016-11-15 10:13的数据类型。

因此,在%s添加引号将解决'%s'类的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM