【发布时间】:2013-05-21 20:18:19
【问题描述】:
我正在尝试将我的 datettime 对象插入 MySQL
>>> t
datetime.datetime(2013, 5, 21, 19, 33, 36, tzinfo=tzutc())
>>> cursor.execute('INSERT INTO tweets(created_at) VALUES ({created_at})'.format(created_at=t))
我得到的错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '19:33:36+00:00)' at line 1")
>>>
MySQL:
mysql> DESCRIBE mytable;
+-------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+-------+
| created_at | datetime | YES | | NULL | |
+-------------+---------------------+------+-----+---------+-------+
【问题讨论】:
-
尝试:>>> cursor.execute('INSERT INTO tweets (created_at) VALUES ("{created_at}")'.format(created_at=t)) 注意空格和“
-
我对数据库一无所知,但您使用的字符串格式将在您的日期时间对象上隐式调用
str并使用该字符串替换{created_at}。从错误来看,该字符串似乎是导致 mysql 阻塞的原因。 -
你说的太对了! @Gustavo Vargas,谢谢它的工作原理
-
不错!好吧,我把它作为答案,如果你同意我会很高兴!
标签: python mysql sql mysql-python