社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python-将数据帧追加到sqlite3表中,是BLOB而不是timestamp?

Sid • 4 年前 • 721 次点击  

我试图将数据从大熊猫数据文件追加到SQLite数据库中的现有表中。在我尝试使用资源管理器查看数据的过程之后,它显示为 BLOB . 当我试图从数据库中读取pandas时,会得到错误信息:

将数据帧读入sqlite表:

# the dtype of timestamp column is datetime64[ns]
query = 'insert or replace into bnffut (timestamp,close,bid,ask) values (?,?,?,?)'
conn.executemany(query, df.to_records(index=False))
conn.commit()

select_statement = 'select * from '+ 'bnf' +'fut order by timestamp DESC limit 80000'
m1df = pd.read_sql(select_statement, conn)

1-如何将数据添加到sqlite表以确保它不是 团块 但时间戳本身呢?

-----编辑-----

我已经找到了解决我特殊问题的办法。

对于sqlite3列,dtype太长,我将timestamp列更改为:

df['timestamp'] = df['timestamp'].astype(str)

现在它显示了正确的日期时间,选择不是问题。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54955
 
721 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Datanovice
Reply   •   1 楼
Datanovice    4 年前

如果你能使用 sqlalchemy 那么你就可以利用 .types

例如:

from sqlalchemy.types import INTEGER, NVARCHAR, DATETIME
# on the assumption you have 3 columns, col_str, col_int, col_date
data_types_dict = {'col_str' : NVARCHAR,
                   'col_int' : INTEGER,
                   'col_date' : DATETIME}
# assuming you have your connection defined as engine
df.to_sql(con=engine,dtypes=data_types_dict,index=False,schema='dim',if_exists='append')

print(data_types_dict)
{'col_str': <class 'sqlalchemy.sql.sqltypes.NVARCHAR'>, 
'col_int': <class 'sqlalchemy.sql.sqltypes.INTEGER'>, 
'col_date': <class 'sqlalchemy.sql.sqltypes.DATETIME'>}

在此处阅读有关SQL Alchemy&SQL lite的更多信息: https://docs.sqlalchemy.org/en/13/dialects/sqlite.html

我个人只使用过postgres和sql server,但从文档来看,它看起来像v.similair。