{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true, "pycharm": { "name": "#%% md\n" } }, "source": [ "[](https://github.com/aws/aws-sdk-pandas)\n", "\n", "# 28 - Amazon DynamoDB" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## Writing Data" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "from datetime import datetime\n", "from decimal import Decimal\n", "from pathlib import Path\n", "\n", "import awswrangler as wr\n", "import pandas as pd\n", "from boto3.dynamodb.conditions import Attr, Key" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### Writing DataFrame" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "table_name = \"movies\"\n", "\n", "df = pd.DataFrame({\n", " \"title\": [\"Titanic\", \"Snatch\", \"The Godfather\"],\n", " \"year\": [1997, 2000, 1972],\n", " \"genre\": [\"drama\", \"caper story\", \"crime\"],\n", "})\n", "wr.dynamodb.put_df(df=df, table_name=table_name)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### Writing CSV file" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "filepath = Path(\"items.csv\")\n", "df.to_csv(filepath, index=False)\n", "wr.dynamodb.put_csv(path=filepath, table_name=table_name)\n", "filepath.unlink()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### Writing JSON files" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "filepath = Path(\"items.json\")\n", "df.to_json(filepath, orient=\"records\")\n", "wr.dynamodb.put_json(path=\"items.json\", table_name=table_name)\n", "filepath.unlink()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "### Writing list of items" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "items = df.to_dict(orient=\"records\")\n", "wr.dynamodb.put_items(items=items, table_name=table_name)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Reading Data" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Read Items" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Limit Read to 5 items\n", "wr.dynamodb.read_items(table_name=table_name, max_items_evaluated=5)\n", "\n", "# Limit Read to Key expression\n", "wr.dynamodb.read_items(\n", " table_name=table_name,\n", " key_condition_expression=(Key(\"title\").eq(\"Snatch\") & Key(\"year\").eq(2000))\n", ")" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Read PartiQL" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | year | \n", "genre | \n", "title | \n", "
---|---|---|---|
0 | \n", "2000 | \n", "caper story | \n", "Snatch | \n", "