PyAthenaお試しメモ
Athenaのwrapper PyAthenaを試したメモ。10ヶ月前に下書きして放置していたので記憶はもうない SQLAlchemyはノータッチ
インスコ
pip install PyAthena
defaultのdbに対象テーブルが存在する場合
from pyathena import connect cursor = connect(aws_access_key_id='YOUR_ACCESS_KEY_ID', aws_secret_access_key='YOUR_SECRET_ACCESS_KEY', s3_staging_dir='s3://YOUR_S3_BUCKET/path/to/', region_name='ap-northeast-1').cursor() sql = "SELECT * FROM test" cursor.execute(sql) <pyathena.cursor.Cursor object at 0x10e5f6cc0> >>> print(cursor.description) [('hoge', 'varchar', None, None, 2147483647, 0, 'UNKNOWN'), ('fuga', 'varchar', None, None, 2147483647, 0, 'UNKNOWN')] >>> print(cursor.fetchall()) [('piyo', 'piyopiyo'), ('bar', 'barbar')]
- discriptionでカラムの情報が分かる
- AthenaのHistoryにクエリ結果は当然残る
pd.read_csv(io.BytesIO(response['Body'].read()), ...)
していて結果ファイルのごみは残らない
任意のdbを作成、そこに存在するテーブルを指定した場合
sql = "SELECT * FROM test2" >>> cursor.execute(sql) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/a999-373/.pyenv/versions/3.7.1/lib/python3.7/site-packages/pyathena/util.py", line 185, in _wrapper return wrapped(*args, **kwargs) File "/Users/a999-373/.pyenv/versions/3.7.1/lib/python3.7/site-packages/pyathena/cursor.py", line 57, in execute raise OperationalError(query_execution.state_change_reason) pyathena.error.OperationalError: SYNTAX_ERROR: line 2:12: Table awsdatacatalog.default.test2 does not exist