无法使用 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'
.
这样的问题
我正在开发一个使用 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'
.