请求数据并添加到数据库中

 
//MyHelper
public class MyHelper extends SQLiteOpenHelper {
    public MyHelper(Context context) {
        super(context, "mydb", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
            sqLiteDatabase.execSQL("create table jsoncache(id integer primary key autoincrement,urlpath text,jsondata text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}
//dao
public class Dao {
    private MyHelper myHelper;
    public  Dao(Context context){
        myHelper=new MyHelper(context);
    }
    public void insertData(String path,String json){
        SQLiteDatabase database=myHelper.getWritableDatabase();
        database.delete("jsoncache","urlpath=?",new String[]{path});
        ContentValues contentValues=new ContentValues();
        contentValues.put("urlpath",path);
        contentValues.put("jsondata",json);
        long rowid=database.insert("jsoncache",null,contentValues);

    }
    public String queryData(String string){
        String data="";
        SQLiteDatabase db=myHelper.getWritableDatabase();
        Cursor cursor=db.query("jsoncache",null,"urlpath=?",new String[]{string},null,null,null);
        while (cursor.moveToNext()){
            data=cursor.getString(cursor.getColumnIndex("jsondata"));
        }
        return data;
    }
}
//MainActivity
public class MainActivity extends AppCompatActivity {

    private List<Bean.DataBean> data=new ArrayList<>();
    private PullToRefreshListView lw;
    String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    int i;
    int j;
    private MyAdapter adapter;
    private Dao dao;
    private Bean bean;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lw = findViewById(R.id.lw);
        lw.setMode(PullToRefreshBase.Mode.BOTH);
        lw.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                i=1;
                j=1;
                path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+i;
                read();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                i++;
                j=2;
                path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+i;
                read();
            }
        });
        dao = new Dao(this);
        read();

    }
    private void read(){
        if (NetWorkUtil.isConn(MainActivity.this)) {
            MyTask myTask=new MyTask(new MyTask.Icallback() {
                @Override
                public void updateUiByjson(String string) {
                    dao.insertData(path,string);
                    Gson gson=new Gson();
                    bean = gson.fromJson(string, Bean.class);
                    //data = bean.getData();
                    if(j==1){
                        data.clear();
                    }
                    //添加新的集合数据
                    data.addAll(bean.getData());


                    //设置适配器
                    setLvAdapter();


                    //关闭头尾视图
                    lw.onRefreshComplete();

                }
            });
            myTask.execute(path);

        }else{
            //NetWorkUtil.showNoNetWorkDlg(MainActivity.this);
            String data1 = dao.queryData(path);
            Gson gson=new Gson();
            bean = gson.fromJson(data1, Bean.class);
            List<Bean.DataBean> list=bean.getData();

            if (j==1){
                data.clear();
            }
            data.addAll(list);
            setLvAdapter();

            lw.onRefreshComplete();
        }

    }
    public void setLvAdapter(){
        if(adapter==null){
            adapter = new MyAdapter();
            lw.setAdapter(adapter);
        }else {
            adapter.notifyDataSetChanged();
        }
    }

在Python,我们可以使用`tushare`库获取股票的日线数据,然后通过`pandas`处理数据并将其插入到SQLite、MySQL等数据库。以下是基本步骤: 1. **安装必要的库**: 首先需要安装`tushare`和用于数据库操作的`pandas`、`sqlite3`或`sqlalchemy`(如果你选择更复杂的数据库如MySQL或PostgreSQL)。 ```bash pip install tushare pandas ``` 2. **设置tushare**: 注册一个tushare pro账号,并获取token,然后初始化它。 ```python import tushare as ts ts.set_token('your_tushare_token') # 替换为你的token pro = ts.pro_api() ``` 3. **获取股票日线数据**: 使用`pro.daily()`函数,传入股票代码获取数据。 ```python stock_code = '000001.SZ' # 以SH开头的是上海交易所的股票,其他类似 df_daily = pro.daily(ts_code=stock_code) ``` 4. **数据清洗和处理**: `df_daily`是一个DataFrame,你可以根据需求调整列名、填充缺失值、计算指标等。 5. **将数据插入数据库**: 这里我们以SQLite为例,使用`pandas`的`to_sql`方法。 ```python import sqlite3 # 创建连接 conn = sqlite3.connect('stock_data.db') df_daily.to_sql(stock_code + '_daily', conn, if_exists='replace') # 将DataFrame直接存储到表 # 或者使用SQLAlchemy连接复杂数据库 from sqlalchemy import create_engine engine = create_engine('mysql+mysqlconnector://username:password@localhost/dbname') # 将df_daily转换为SQLAlchemy的Table对象 table = Table(stock_code + '_daily', metadata, autoload_with=engine) # 插入数据 with engine.begin() as connection: table.create() df_daily.to_sql(table.name, con=connection, if_exists='append') ``` 6. **关闭连接**: 最后别忘了关闭数据库连接。 ```python conn.close() # 如果使用了SQLite ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值