【发布时间】:2014-04-14 17:18:19
【问题描述】:
我正在尝试从 postgresql 数据库中查询数据并将其插入到 sqlite 数据库中。
这是我的代码:
import pandas as pd
import pandas.io.sql as pd_sql
import sqlite3 as sql3
import psycopg2
#Aquire Data FROM PostgreSQL DB
conn_pg = psycopg2.connect("dbname='xx' user='xxxxx' host=xxx.xxx.xx.xxx password='xxxx'");
sql_1='SELECT * FROM table1 limit 5'
df_1=pd_sql.read_frame(sql_1,conn_pg)
conn_pg.close()
#Insert Into sqlite3 DB
conn_sqlite=sql3.connect('/xxxx/xxxx/xxxx/xxxx/my_db.db')
pd_sql.write_frame(df_1,'table1',conn_sqlite,'sqlite',if_exists='replace')
conn_sqlite.close()
df_1 具有数据类型:
field1 对象
field2 datetime64[ns]
field3 float64
field4 对象
数据类型:对象
我收到一个错误:
InterfaceError: Error binding parameter 1 - probably unsupported type.
开:
pd_sql.write_frame(df_1,'table1',conn_sqlite,'sqlite',if_exists='replace')
我猜 sqlite 不喜欢 field2 的 datetime64。我需要帮助弄清楚:
1. 我应该在我的数据框中将 field2 转换为哪种日期类型和
2. 如何在 pandas DataFrame 中做到这一点
任何帮助将不胜感激。
干杯!
【问题讨论】:
标签: python sqlite postgresql pandas