| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import pandas as pd
- import pymysql
- def get_stock_data(table_name, db_config):
- """
- 从数据库中读取指定股票的数据并进行格式转换和清洗。
- :param table_name: 数据表名称
- :param db_config: 数据库配置信息,包含 host, port, user, password, database
- :return: 清洗后的 Pandas DataFrame
- """
- try:
- # 连接数据库
- connection = pymysql.connect(
- host=db_config['host'],
- port=db_config['port'],
- user=db_config['user'],
- password=db_config['password'],
- database=db_config['database']
- )
- print(f"开始读取表:{table_name}")
- # 查询数据
- query = f"SELECT time, open_back, high_back, low_back, close_back, volume_back FROM `{table_name}`"
- df = pd.read_sql(query, connection) # 读取数据到 DataFrame,注意数据库连接方式
- connection.close()
- if df.empty:
- print(f"{table_name} 数据为空")
- return pd.DataFrame()
- # 格式转换和清洗
- df.rename(columns={
- 'time': 'Date',
- 'high_back': 'High',
- 'low_back': 'Low',
- 'open_back': 'Open',
- 'close_back': 'Close',
- 'volume_back': 'Volume'
- }, inplace=True)
- df['Date'] = pd.to_datetime(df['Date'])
- print(f"完成数据清洗:{table_name}")
- print(df.head())
- return df
- except Exception as e:
- print(f"读取 {table_name} 数据失败:{e}")
- return pd.DataFrame()
|