通过AKshare获取全A股全部的数据并存入数据库?
时间: 2024-06-01 09:14:21 浏览: 24
可以使用AKShare中的get_all_stock_symbols()函数获取全A股的股票代码,再使用AKShare中的get_stock_data()函数获取每只股票的交易数据,最后将数据存入数据库即可。可以参考以下代码:
import akshare as ak
import pandas as pd
from sqlalchemy import create_engine
# 获取股票代码
symbol_df = ak.stock_zh_a_spot()
symbol_list = symbol_df['代码'].tolist()
# 连接数据库
engine = create_engine('mysql+pymysql://用户名:密码@地址:端口号/数据库名')
# 循环获取交易数据并存入数据库
for symbol in symbol_list:
try:
data = ak.stock_zh_a_hist(symbol)
data.to_sql(symbol, engine, if_exists='replace')
print(symbol, '已存入数据库')
except:
print(symbol, '获取或存储失败')
相关问题
qt开发中从硬件获取数据并存入数据库
在Qt开发中,从硬件获取数据并存入数据库的过程可以分为以下几个步骤:
1. 硬件数据获取:根据硬件设备类型,选择合适的通信协议和接口,获取硬件设备的数据。
2. 数据处理:对于获取到的原始数据,需要进行处理和转换,使其符合数据库表的数据结构和格式要求。
3. 数据库操作:使用Qt提供的数据库API,连接数据库并执行数据插入、更新、删除等操作。
下面是一个简单的示例代码,演示如何从串口中获取数据并存入SQLite数据库:
```cpp
#include <QCoreApplication>
#include <QSerialPort>
#include <QSqlDatabase>
#include <QSqlQuery>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建串口对象
QSerialPort serialPort;
serialPort.setPortName("COM1");
serialPort.setBaudRate(QSerialPort::Baud9600);
serialPort.setDataBits(QSerialPort::Data8);
serialPort.setParity(QSerialPort::NoParity);
serialPort.setStopBits(QSerialPort::OneStop);
serialPort.setFlowControl(QSerialPort::NoFlowControl);
// 打开串口
if (!serialPort.open(QIODevice::ReadOnly)) {
qDebug() << "Failed to open serial port:" << serialPort.errorString();
return -1;
}
// 创建数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("data.db");
if (!db.open()) {
qDebug() << "Failed to open database:" << db.lastError().text();
return -1;
}
// 创建数据表
QSqlQuery query;
query.exec("CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY AUTOINCREMENT, value INTEGER)");
// 读取串口数据并存入数据库
while (serialPort.isOpen()) {
if (serialPort.waitForReadyRead(100)) {
QByteArray data = serialPort.readAll();
int value = data.toInt();
if (value > 0) {
query.prepare("INSERT INTO data (value) VALUES (:value)");
query.bindValue(":value", value);
query.exec();
}
}
}
return a.exec();
}
```
在上述代码中,我们首先创建了一个串口对象,并设置了串口的参数。然后使用`open()`函数打开串口。接着创建了一个SQLite数据库连接,并在其中创建了一个名为`data`的数据表。
在主循环中,我们通过`waitForReadyRead()`函数等待串口数据的到来,然后读取数据并将其转换为整数值。如果该值大于0,则将其插入到数据库中。
需要注意的是,在实际应用中,我们需要根据具体的硬件设备类型和通信协议进行相应的处理。同时,为了保证程序的稳定性和可靠性,我们还需要添加错误处理和异常处理等相关代码。
python获取股票10年的日线数据并且存入数据库
要获取股票10年的日线数据并存入数据库,你需要进行以下步骤:
1. 确定需要获取的股票代码,例如获取中国平安(601318)的数据。
2. 导入必要的库,包括pandas、tushare和pymysql。
```python
import pandas as pd
import tushare as ts
import pymysql
```
3. 使用tushare库获取股票数据。这里我们使用tushare的pro接口获取数据,需要先在tushare官网注册并获取API令牌。以下代码获取中国平安2010年至今的日线数据。
```python
ts.set_token('YOUR_TOKEN_HERE')
pro = ts.pro_api()
df = pro.daily(ts_code='601318.SH', start_date='20100101')
```
4. 将数据存入数据库。这里我们使用pymysql库连接MySQL数据库,并将数据存入名为“stock_daily”的表中。
```python
conn = pymysql.connect(host='localhost', user='root', password='YOUR_PASSWORD_HERE', db='YOUR_DATABASE_NAME_HERE', charset='utf8')
cursor = conn.cursor()
# 创建表格
cursor.execute('''
CREATE TABLE IF NOT EXISTS stock_daily (
ts_code VARCHAR(20) NOT NULL,
trade_date DATE NOT NULL,
open FLOAT(10,2) NOT NULL,
high FLOAT(10,2) NOT NULL,
low FLOAT(10,2) NOT NULL,
close FLOAT(10,2) NOT NULL,
pre_close FLOAT(10,2) NOT NULL,
change FLOAT(10,2) NOT NULL,
pct_chg FLOAT(10,2) NOT NULL,
vol FLOAT(20,2) NOT NULL,
amount FLOAT(20,2) NOT NULL,
PRIMARY KEY (ts_code, trade_date)
)
''')
# 存入数据
for index, row in df.iterrows():
sql = '''
INSERT INTO stock_daily (ts_code, trade_date, open, high, low, close, pre_close, change, pct_chg, vol, amount)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
'''
cursor.execute(sql, (row['ts_code'], row['trade_date'], row['open'], row['high'], row['low'], row['close'], row['pre_close'], row['change'], row['pct_chg'], row['vol'], row['amount']))
conn.commit()
cursor.close()
conn.close()
```
完成以上步骤后,你就可以在数据库中找到股票数据了。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)