# 导入tushare import tushare as ts # 初始化pro接口 pro = ts.pro_api('9ca8c71035f360d1dabefd82df4261e4be2ebe201bcf469e0bb7ede8') # 拉取数据 df = pro.top10_floatholders(**{ "ts_code": "", "period": "", "ann_date": "", "start_date": "", "end_date": "", "offset": "", "limit": "" }, fields=[ "ts_code", "ann_date", "end_date", "holder_name", "hold_amount" ]) print(df) 保存到mysql 并且根据已下载的数据进行更新
时间: 2023-07-03 15:32:47 浏览: 214
ADC.rar_C8051F360_c8051f360 a
5星 · 资源好评率100%
好的,您想要将数据保存到 MySQL 中,并且在后续更新时可以根据已下载的数据进行更新。我可以为您提供一些代码示例,您可以根据自己的需求进行修改和适配。
首先,您需要安装 `pymysql` 库来连接 MySQL 数据库。您可以使用以下命令进行安装:
```python
pip install pymysql
```
然后,您可以使用以下代码将数据保存到 MySQL 数据库中:
```python
import pymysql
import pandas as pd
# 将数据转换成 DataFrame 格式
df = pro.top10_floatholders(
**{
"ts_code": "",
"period": "",
"ann_date": "",
"start_date": "",
"end_date": "",
"offset": "",
"limit": ""
},
fields=[
"ts_code",
"ann_date",
"end_date",
"holder_name",
"hold_amount"
]
)
# 连接 MySQL 数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
db='test',
charset='utf8mb4'
)
# 将数据保存到 MySQL 数据库中
df.to_sql('top10_floatholders', conn, if_exists='replace', index=False)
# 关闭连接
conn.close()
```
其中,参数 `if_exists` 的值为 `replace` 表示如果表已经存在,则替换原有表,如果表不存在,则新建表。
接下来,您可以使用以下代码根据已下载的数据进行更新:
```python
import pymysql
import pandas as pd
# 将数据转换成 DataFrame 格式
df = pro.top10_floatholders(
**{
"ts_code": "",
"period": "",
"ann_date": "",
"start_date": "",
"end_date": "",
"offset": "",
"limit": ""
},
fields=[
"ts_code",
"ann_date",
"end_date",
"holder_name",
"hold_amount"
]
)
# 连接 MySQL 数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='123456',
db='test',
charset='utf8mb4'
)
# 从 MySQL 数据库中读取已有数据
sql = 'SELECT * FROM top10_floatholders'
existing_data = pd.read_sql(sql, conn)
# 将已有数据和新数据合并,去重并保留最新的数据
merged_data = pd.concat([existing_data, df])
merged_data.drop_duplicates(subset=['ts_code', 'ann_date', 'end_date', 'holder_name'], keep='last', inplace=True)
# 将合并后的数据保存到 MySQL 数据库中
merged_data.to_sql('top10_floatholders', conn, if_exists='replace', index=False)
# 关闭连接
conn.close()
```
其中,`merged_data.drop_duplicates(subset=['ts_code', 'ann_date', 'end_date', 'holder_name'], keep='last', inplace=True)` 表示根据 `ts_code`、`ann_date`、`end_date` 和 `holder_name` 进行去重,并保留最新的数据。如果您想要保留最早的数据,可以将参数 `keep` 设置为 `first`。
希望这些代码示例对您有所帮助。如果您有任何问题或者需要进一步的帮助,请随时提出。
阅读全文