无法使用 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 项目。我有一个名为 interest 的模式,它看起来像

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)

);

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

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” 第 1 行:... end_time,预算)值(1、2、7、1、2016-11-15 10:13::tim... ^ [SQL: 'insert into interest(usr, activity_category, activity_subcategory, pid, start_time, end_time, budget) values (1, 2, 7, 1, 2016-11-15 10:13::timestamp, 2016-10-15 11:24::timestamp, 1000)']

我花了两天时间试图解决这个问题。非常感谢任何形式的帮助。

谢谢!

在错误消息中很明显,在 10 附近有一个错误。即 sql 无法识别 2016-11-15 10:13 的数据类型,因为日期和时间之间存在 space。

所以给 %s 添加引号将解决 '%s'.

这样的问题