我已经去了MariaDB服务器,尝试连接并使用python将数据获取到熊猫数据框中。
MariaDB如下所示:
html {
opacity: 0;
transition: opacity 1s;
}
html.light, html.dark {
opacity: 1;
}
具有表CREATE DATABASE `fhem` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
和current
。
history
我可以在python中成功连接
CREATE TABLE `fhem`.`history` (TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));
数据框具有正确的标头:
import pandas as pd
import sqlalchemy as db
engine = db.create_engine('mysql+mysqlconnector://user:pass@192.168.37.33:3306/fhem')
data = pd.read_sql_table('history', engine)
但是单元格的格式不正确。它们看起来像
['TIMESTAMP', 'DEVICE', 'TYPE', 'EVENT', 'READING', 'VALUE', 'UNIT']
,并且应该类似于
[50, 50, 46, 51]
如果我在终端中使用 mysql -u用户.. SELCET *从历史记录中进行查询; 我会获得正确的数据。 我尝试添加
"on" or "off"
但是那也没有帮助。正确显示的唯一列是engine = db.create_engine('mysql+mysqlconnector://user:pass@192.168.37.33:3306/fhem', encoding='utf8')
engine = db.create_engine('mysql+mysqlconnector://user:pass@192.168.37.33:3306/fhem?charset=utf8')
。
我能做的是以下事情:
TIMESTAMP
我可以对我感兴趣的每个列执行此操作,而不是将其添加到新的df中,但是我想必须有更好的方法。你能帮我吗?
编辑
我有以下选择:
for l in data['VALUE'].values:
x = l.decode('utf-8')
print(x)
print(data['VALUE'])
for l in data['VALUE']:
print(l)
最后一个是我要针对的df。 我尝试过
for l in data['VALUE']:
print(l.decode('utf-8'))
不执行任何操作。 我在熊猫0.23.4和sqlalchemy 1.2.12上运行
Fabian
答案 0 :(得分:0)
我的系统在VM Ubuntu 18.04 LTS上运行。我现在已经切换到Windows和Anaconda和Python 3.6,并且没有这样的问题。我第一次得到正确的值。
Fabian