【发布时间】:2015-09-04 22:11:50
【问题描述】:
我有一个 MySql 表,其时间戳具有微秒级分辨率:
+----------------------------+------+
| time | seq |
+----------------------------+------+
| 2015-06-19 02:17:57.389509 | 0 |
| 2015-06-19 02:17:57.934171 | 10 |
+----------------------------+------+
我想将它读入熊猫数据框。使用
import pandas as pd
con = get_connection()
result = pd.read_sql("SELECT * FROM MyTable;", con=con)
print result
返回 NaT(不是时间):
time seq
0 NaT 0
1 NaT 10
如何将其读入时间戳?
【问题讨论】:
-
你能提供一些额外的信息吗? 1)你的熊猫版本是什么? 2) 什么是
con?它是一个 sqlalchemy 引擎吗?还是有联系? (应该是 sqlalchemy 引擎) 3) 你能显示con.execute("SELECT * FROM MyTable;").fetchall()`` 的输出吗 -
@joris,“它应该是一个 sqlalchemy 引擎”不一定是真的。对于
read_sql(),可以提供sqlite3DBAPI2对象,对吗? -
啊,是的,这是真的! (不是正式的,但确实有效),但仍然很有趣。然后您使用
read_sql_table提供的示例将不起作用。编辑:请注意,sqlite 是一个例外,为此官方支持 DBAPI 连接,也可用于写入帧,对于其他数据库类型,它仅适用于读取查询,不适用于读取或写入表。 -
这里是docs 的链接,以防有人在寻找它。
-
@joris: 1) 熊猫版本 = 0.16.2。 --- 2)
con是与带有 MySQLdb 模块的数据库的连接:con = MySQLdb.connect(host='1.2.3.4', db='mydb')--- 3)con.execute是不可能的,因为AttributeError: 'Connection' object has no attribute 'execute'。