gpt4 book ai didi

python - sqlalchemy:将 html 表插入 mysql 数据库

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:04 25 4
gpt4 key购买 nike

我是 python (3) 新手,现在想要以下内容:

我正在尝试通过 pandas 从网站收集数据,并希望将结果存储到 mysql 数据库中,例如:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine("mysql://python:"+'pw'+"@localhost/test?charset=utf8")

url = r'http://www.boerse-frankfurt.de/devisen'
dfs = pd.read_html(url,header=0,index_col=0,encoding="UTF-8")
devisen = dfs[9] #Select the right table
devisen.to_sql(name='table_fx', con=engine, if_exists='append', index=False)

我收到以下错误:

.... _mysql.connection.query(自身,查询)sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1054, "未知列 '\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tBezeichnung\n\t\t\t\t\t\t\t\n\t\t\t\t' in '字段列表'") [SQL: 'INSERT INTO tbl_fx (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tBezeichnung\n\t\t\t\t\t\t\t\n\t\t\t\t, \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tzum 伏特格\n\t\t\t\t\t\t\t\n\t\t\t\t, \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t莱茨特站\n\t\t\t\t\t\t\t\n\t\t\t\t, \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tTageshoch\n\t\t\t\t\t\t\t\n\t\t\t\t, \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tTagestief\n\t\t\t\t\t\t\t\n\t\t\t\t, \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t52-Wochenhoch\n\t\t\t\t\t\t\t\n\t\t\t\t, \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t52-Wochentief\n\t\t\t\t\t\t\t\n\t\t\t\t, \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tDatum\n\t\t\t\t\t\t\t\n\t\t\t\t, \nAktionen\t\t\t\t) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)'] [参数: (('VAE迪拉姆', '-0,5421%', 45321.0, 45512.0, 45306.0, 46080.0, 38550.0, '20.02.2018 14:29:00', 无), ('阿美尼德拉姆', '-0,0403%', 5965339.0 , 5970149.0, 5961011.0, 6043443.0, 5108265.0, '20.02.2018 01:12:00', 无), ....

sqlalchemy如何将相应数据插入table_fx?问题是带有多个\n 和\t 的 header 。

mysql 表具有以下结构:

( name varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, bezeichnung varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, diff_vortag varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, 最后 双默认 NULL, day_high 双默认 NULL, day_low 双默认 NULL, 52_week_high 双默认 NULL, 52_week_low 双默认 NULL, date_time varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, 未命名 varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL)

非常欢迎任何帮助。

提前非常感谢

安德烈亚斯

最佳答案

这应该可以做到。如果转换为数据框,您可以先重命名列。您创建的“dfs”实体实际上是数据框实体的列表。

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine("mysql://python:"+'pw'+"@localhost/test?charset=utf8")

url = r'http://www.boerse-frankfurt.de/devisen'
dfs = pd.read_html(url,header=0,index_col=0,encoding="UTF-8")

devisen = dfs[9].dropna(axis=0, thresh=4) # Select right table and make a DF

devisen.columns = devisen.columns.str.strip() # Strip extraneous characters

devisen.to_sql(name='table_fx', con=engine, if_exists='append', index=False)

关于python - sqlalchemy:将 html 表插入 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48887007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com