我在MySQL表中有一个date列。我想在这个列中插入一个datetime.datetime()对象。我应该在execute语句中使用什么?
我试过了:
now = datetime.datetime(2009,5,5)
cursor.execute("INSERT INTO table
(name, id, datecolumn) VALUES (%s, %s
, %s)",("name", 4,now))我收到一个错误:"TypeError: not all arguments converted during string formatting"我应该用什么来代替%s
发布于 2009-07-16 15:08:32
您要连接到哪个数据库?我知道甲骨文对日期格式很挑剔,喜欢ISO 8601格式。
**注意:糟糕,我刚看到你在用MySQL。只需格式化日期并将其作为单独的直接SQL调用进行测试即可。
在Python中,您可以获得如下所示的ISO日期
now.isoformat()例如,Oracle喜欢这样的日期
insert into x values(99, '31-may-09');根据您的数据库,如果是Oracle,您可能需要对其执行TO_DATE:
insert into x
values(99, to_date('2009/05/31:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));TO_DATE的一般用法是:
TO_DATE(<string>, '<format>')如果使用另一个数据库(我看到了光标并认为是Oracle;我可能是错的),那么请检查他们的日期格式工具。对于MySQL,它是DATE_FORMAT(),对于Server,它是CONVERT。
此外,使用像SQLAlchemy这样的工具将消除这些差异,并使您的生活变得轻松。
https://stackoverflow.com/questions/1136437
复制相似问题