human
Pythonを作成して、SQLALCHEMYを使用してSQLiteデータベースにCoinbaseAPIからデータを保存します
gpt
もちろんです！ここにCoinbase APIからデータを取得し、SQLAlchemyライブラリを使用してSQLiteデータベースに保存するPythonスクリプトの例があります：

```python
import requests
import json
from sqlalchemy import create_engine, Column, Integer, Float, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# Define the SQLAlchemy engine and session
engine = create_engine('sqlite:///coinbase.db')
Session = sessionmaker(bind=engine)
Base = declarative_base()

# Define the class that will map to the database table
class Trade(Base):
    __tablename__ = 'trades'

    id = Column(Integer, primary_key=True)
    price = Column(Float)
    size = Column(Float)
    time = Column(String)

# Define the Coinbase API URL and parameters
url = 'https://api.coinbase.com/v2/trades/BTC-USD'
params = {'limit': 10}

# Make a request to the Coinbase API and parse the JSON response
response = requests.get(url, params=params)
trades = json.loads(response.text)['data']

# Create a new session and add the trades to the database
session = Session()
for trade in trades:
    new_trade = Trade(
        price=float(trade['price']),
        size=float(trade['size']),
        time=trade['time']
    )
    session.add(new_trade)
session.commit()

# Query the database and print the trades
trades = session.query(Trade).all()
for trade in trades:
    print(f"Trade: {trade.id}, Price: {trade.price}, Size: {trade.size}, Time: {trade.time}")
```

このスクリプトはデータベースのテーブルにマップする Trade クラスを定義し、Coinbase API にリクエストを行うために requests ライブラリを使用し、SQLAlchemy Session オブジェクトを使用して取得したデータを trades テーブルに格納します。最後に、スクリプトはデータベースに問い合わせ、取引を表示します。このスクリプトをカスタマイズして、異なる通貨や時間間隔のデータを取得したり、必要に応じて追加のカラムを含むように Trade クラスを変更したりすることができます。
human
ありがとう。これを、メソッド「fetch_and_store_pair（currency_pair、tablename）」を使用したクラス「coinbaseadapter」に入れてください。

URLの「BTC-USD」を最初のパラメーターに、2番目のパラメーターにテーブル名に置き換えます。
gpt
確かに、ここに通貨ペアとテーブル名をパラメータとして受け取る fetch_and_store_pair メソッドを持つ CoinbaseAdapter クラスを含むコードの更新版があります：

```python 
import requests
import json
from sqlalchemy import create_engine, Column, Integer, Float, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

class Trade(Base):
tablename = 'trades'
id = Column(Integer, primary_key=True)
price = Column(Float)
size = Column(Float)
time = Column(String)

class CoinbaseAdapter:
def init(self, db_uri):
self.db_uri = db_uri
self.engine = create_engine(self.db_uri)
self.Session = sessionmaker(bind=self.engine)

def fetch_and_store_pair(self, currency_pair, table_name):
    # Define the class that will map to the database table
    table_class = type(table_name, (Base,), {'__tablename__': table_name})

    # Define the Coinbase API URL and parameters
    url = f'https://api.coinbase.com/v2/trades/{currency_pair}'
    params = {'limit': 10}

    # Make a request to the Coinbase API and parse the JSON response
    response = requests.get(url, params=params)
    trades = json.loads(response.text)['data']

    # Create a new session and add the trades to the database
    session = self.Session()
    for trade in trades:
        new_trade = table_class(
            price=float(trade['price']),
            size=float(trade['size']),
            time=trade['time']
        )
        session.add(new_trade)
    session.commit()

    # Query the database and print the trades
    trades = session.query(table_class).all()
    for trade in trades:
        print(f"Trade: {trade.id}, Price: {trade.price}, Size: {trade.size}, Time: {trade.time}")
```

使用例

```python
adapter = CoinbaseAdapter('sqlite:///coinbase.db')
adapter.fetch_and_store_pair('BTC-USD', 'btc_usd_trades')
```