{ "cells": [ { "cell_type": "markdown", "id": "3ca0c15a13bd6882", "metadata": {}, "source": [ "# DBRepo Starter Notebook\n", "\n", "## Environment\n", "\n", "Set the REST API endpoint and your username + password. This ensures it is not revealed in the code." ] }, { "metadata": { "ExecuteTime": { "end_time": "2025-06-04T07:30:52.468596Z", "start_time": "2025-06-04T07:30:52.463645Z" } }, "cell_type": "code", "source": "from pandas.core.interchange.dataframe_protocol import DataFrame", "id": "eee6d2de5bb78c9b", "outputs": [], "execution_count": 10 }, { "cell_type": "markdown", "id": "2cbd7a83a800b879", "metadata": {}, "source": [ "The code above loads the values from the `.env` file into this Jupyter Notebook. Alternatively you can set all parameters directly in the method.\n", "\n", "## Global Imports" ] }, { "metadata": { "ExecuteTime": { "end_time": "2025-06-04T07:30:52.545184Z", "start_time": "2025-06-04T07:30:52.540063Z" } }, "cell_type": "code", "source": [ "from dbrepo.RestClient import RestClient\n", "from getpass import getpass\n", "\n", "database_id = \"\"\n", "username = \"\"\n", "password = getpass() # asks securely so password is not revealed in the code\n", "\n", "client = RestClient(endpoint=\"https://test.dbrepo.tuwien.ac.at\", username=username, password=password)" ], "id": "f629d91b2164484f", "outputs": [], "execution_count": 11 }, { "metadata": {}, "cell_type": "markdown", "source": [ "## Tables\n", "\n", "Load data from any table into a `pandas` DataFrame." ], "id": "9b1e8c0eab380eef" }, { "metadata": { "ExecuteTime": { "end_time": "2025-06-04T07:30:53.061283Z", "start_time": "2025-06-04T07:30:52.593186Z" } }, "cell_type": "code", "source": [ "deployments = client.get_table_data(database_id, 'table_id_str')\n", "display(deployments)" ], "id": "48a8d5510529d53f", "outputs": [ { "ename": "ConnectionError", "evalue": "HTTPSConnectionPool(host='dbrepo.example.com', port=443): Max retries exceeded with url: /api/database/71183815-021d-40d1-884e-3e58bd43b169/table/0b533238-e73e-43ec-a773-04ed75349b7a/data?page=0&size=10 (Caused by NameResolutionError(\": Failed to resolve 'dbrepo.example.com' ([Errno -2] Name or service not known)\"))", "output_type": "error", "traceback": [ "\u001B[31m---------------------------------------------------------------------------\u001B[39m", "\u001B[31mgaierror\u001B[39m Traceback (most recent call last)", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connection.py:198\u001B[39m, in \u001B[36mHTTPConnection._new_conn\u001B[39m\u001B[34m(self)\u001B[39m\n\u001B[32m 197\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m198\u001B[39m sock = \u001B[43mconnection\u001B[49m\u001B[43m.\u001B[49m\u001B[43mcreate_connection\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 199\u001B[39m \u001B[43m \u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_dns_host\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mport\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 200\u001B[39m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 201\u001B[39m \u001B[43m \u001B[49m\u001B[43msource_address\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43msource_address\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 202\u001B[39m \u001B[43m \u001B[49m\u001B[43msocket_options\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43msocket_options\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 203\u001B[39m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 204\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m socket.gaierror \u001B[38;5;28;01mas\u001B[39;00m e:\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/util/connection.py:60\u001B[39m, in \u001B[36mcreate_connection\u001B[39m\u001B[34m(address, timeout, source_address, socket_options)\u001B[39m\n\u001B[32m 58\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m LocationParseError(\u001B[33mf\u001B[39m\u001B[33m\"\u001B[39m\u001B[33m'\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mhost\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m'\u001B[39m\u001B[33m, label empty or too long\u001B[39m\u001B[33m\"\u001B[39m) \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[32m---> \u001B[39m\u001B[32m60\u001B[39m \u001B[38;5;28;01mfor\u001B[39;00m res \u001B[38;5;129;01min\u001B[39;00m \u001B[43msocket\u001B[49m\u001B[43m.\u001B[49m\u001B[43mgetaddrinfo\u001B[49m\u001B[43m(\u001B[49m\u001B[43mhost\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mport\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfamily\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msocket\u001B[49m\u001B[43m.\u001B[49m\u001B[43mSOCK_STREAM\u001B[49m\u001B[43m)\u001B[49m:\n\u001B[32m 61\u001B[39m af, socktype, proto, canonname, sa = res\n", "\u001B[36mFile \u001B[39m\u001B[32m/usr/lib/python3.11/socket.py:962\u001B[39m, in \u001B[36mgetaddrinfo\u001B[39m\u001B[34m(host, port, family, type, proto, flags)\u001B[39m\n\u001B[32m 961\u001B[39m addrlist = []\n\u001B[32m--> \u001B[39m\u001B[32m962\u001B[39m \u001B[38;5;28;01mfor\u001B[39;00m res \u001B[38;5;129;01min\u001B[39;00m \u001B[43m_socket\u001B[49m\u001B[43m.\u001B[49m\u001B[43mgetaddrinfo\u001B[49m\u001B[43m(\u001B[49m\u001B[43mhost\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mport\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfamily\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mtype\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mproto\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mflags\u001B[49m\u001B[43m)\u001B[49m:\n\u001B[32m 963\u001B[39m af, socktype, proto, canonname, sa = res\n", "\u001B[31mgaierror\u001B[39m: [Errno -2] Name or service not known", "\nThe above exception was the direct cause of the following exception:\n", "\u001B[31mNameResolutionError\u001B[39m Traceback (most recent call last)", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connectionpool.py:787\u001B[39m, in \u001B[36mHTTPConnectionPool.urlopen\u001B[39m\u001B[34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001B[39m\n\u001B[32m 786\u001B[39m \u001B[38;5;66;03m# Make the request on the HTTPConnection object\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m787\u001B[39m response = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_make_request\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 788\u001B[39m \u001B[43m \u001B[49m\u001B[43mconn\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 789\u001B[39m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 790\u001B[39m \u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 791\u001B[39m \u001B[43m \u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtimeout_obj\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 792\u001B[39m \u001B[43m \u001B[49m\u001B[43mbody\u001B[49m\u001B[43m=\u001B[49m\u001B[43mbody\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 793\u001B[39m \u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m=\u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 794\u001B[39m \u001B[43m \u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m=\u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 795\u001B[39m \u001B[43m \u001B[49m\u001B[43mretries\u001B[49m\u001B[43m=\u001B[49m\u001B[43mretries\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 796\u001B[39m \u001B[43m \u001B[49m\u001B[43mresponse_conn\u001B[49m\u001B[43m=\u001B[49m\u001B[43mresponse_conn\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 797\u001B[39m \u001B[43m \u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[43m=\u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 798\u001B[39m \u001B[43m \u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[43m=\u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 799\u001B[39m \u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mresponse_kw\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 800\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 802\u001B[39m \u001B[38;5;66;03m# Everything went great!\u001B[39;00m\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connectionpool.py:488\u001B[39m, in \u001B[36mHTTPConnectionPool._make_request\u001B[39m\u001B[34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001B[39m\n\u001B[32m 487\u001B[39m new_e = _wrap_proxy_error(new_e, conn.proxy.scheme)\n\u001B[32m--> \u001B[39m\u001B[32m488\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m new_e\n\u001B[32m 490\u001B[39m \u001B[38;5;66;03m# conn.request() calls http.client.*.request, not the method in\u001B[39;00m\n\u001B[32m 491\u001B[39m \u001B[38;5;66;03m# urllib3.request. It also calls makefile (recv) on the socket.\u001B[39;00m\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connectionpool.py:464\u001B[39m, in \u001B[36mHTTPConnectionPool._make_request\u001B[39m\u001B[34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001B[39m\n\u001B[32m 463\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m464\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_validate_conn\u001B[49m\u001B[43m(\u001B[49m\u001B[43mconn\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 465\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m (SocketTimeout, BaseSSLError) \u001B[38;5;28;01mas\u001B[39;00m e:\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connectionpool.py:1093\u001B[39m, in \u001B[36mHTTPSConnectionPool._validate_conn\u001B[39m\u001B[34m(self, conn)\u001B[39m\n\u001B[32m 1092\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m conn.is_closed:\n\u001B[32m-> \u001B[39m\u001B[32m1093\u001B[39m \u001B[43mconn\u001B[49m\u001B[43m.\u001B[49m\u001B[43mconnect\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 1095\u001B[39m \u001B[38;5;66;03m# TODO revise this, see https://github.com/urllib3/urllib3/issues/2791\u001B[39;00m\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connection.py:704\u001B[39m, in \u001B[36mHTTPSConnection.connect\u001B[39m\u001B[34m(self)\u001B[39m\n\u001B[32m 703\u001B[39m sock: socket.socket | ssl.SSLSocket\n\u001B[32m--> \u001B[39m\u001B[32m704\u001B[39m \u001B[38;5;28mself\u001B[39m.sock = sock = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_new_conn\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 705\u001B[39m server_hostname: \u001B[38;5;28mstr\u001B[39m = \u001B[38;5;28mself\u001B[39m.host\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connection.py:205\u001B[39m, in \u001B[36mHTTPConnection._new_conn\u001B[39m\u001B[34m(self)\u001B[39m\n\u001B[32m 204\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m socket.gaierror \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[32m--> \u001B[39m\u001B[32m205\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m NameResolutionError(\u001B[38;5;28mself\u001B[39m.host, \u001B[38;5;28mself\u001B[39m, e) \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34;01me\u001B[39;00m\n\u001B[32m 206\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m SocketTimeout \u001B[38;5;28;01mas\u001B[39;00m e:\n", "\u001B[31mNameResolutionError\u001B[39m: : Failed to resolve 'dbrepo.example.com' ([Errno -2] Name or service not known)", "\nThe above exception was the direct cause of the following exception:\n", "\u001B[31mMaxRetryError\u001B[39m Traceback (most recent call last)", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/requests/adapters.py:667\u001B[39m, in \u001B[36mHTTPAdapter.send\u001B[39m\u001B[34m(self, request, stream, timeout, verify, cert, proxies)\u001B[39m\n\u001B[32m 666\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m--> \u001B[39m\u001B[32m667\u001B[39m resp = \u001B[43mconn\u001B[49m\u001B[43m.\u001B[49m\u001B[43murlopen\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 668\u001B[39m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m=\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m.\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 669\u001B[39m \u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m=\u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 670\u001B[39m \u001B[43m \u001B[49m\u001B[43mbody\u001B[49m\u001B[43m=\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m.\u001B[49m\u001B[43mbody\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 671\u001B[39m \u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m=\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m.\u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 672\u001B[39m \u001B[43m \u001B[49m\u001B[43mredirect\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 673\u001B[39m \u001B[43m \u001B[49m\u001B[43massert_same_host\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 674\u001B[39m \u001B[43m \u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 675\u001B[39m \u001B[43m \u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 676\u001B[39m \u001B[43m \u001B[49m\u001B[43mretries\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mmax_retries\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 677\u001B[39m \u001B[43m \u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtimeout\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 678\u001B[39m \u001B[43m \u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m=\u001B[49m\u001B[43mchunked\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 679\u001B[39m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 681\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m (ProtocolError, \u001B[38;5;167;01mOSError\u001B[39;00m) \u001B[38;5;28;01mas\u001B[39;00m err:\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/connectionpool.py:841\u001B[39m, in \u001B[36mHTTPConnectionPool.urlopen\u001B[39m\u001B[34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001B[39m\n\u001B[32m 839\u001B[39m new_e = ProtocolError(\u001B[33m\"\u001B[39m\u001B[33mConnection aborted.\u001B[39m\u001B[33m\"\u001B[39m, new_e)\n\u001B[32m--> \u001B[39m\u001B[32m841\u001B[39m retries = \u001B[43mretries\u001B[49m\u001B[43m.\u001B[49m\u001B[43mincrement\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 842\u001B[39m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43merror\u001B[49m\u001B[43m=\u001B[49m\u001B[43mnew_e\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m_pool\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m_stacktrace\u001B[49m\u001B[43m=\u001B[49m\u001B[43msys\u001B[49m\u001B[43m.\u001B[49m\u001B[43mexc_info\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[43m[\u001B[49m\u001B[32;43m2\u001B[39;49m\u001B[43m]\u001B[49m\n\u001B[32m 843\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 844\u001B[39m retries.sleep()\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/urllib3/util/retry.py:519\u001B[39m, in \u001B[36mRetry.increment\u001B[39m\u001B[34m(self, method, url, response, error, _pool, _stacktrace)\u001B[39m\n\u001B[32m 518\u001B[39m reason = error \u001B[38;5;129;01mor\u001B[39;00m ResponseError(cause)\n\u001B[32m--> \u001B[39m\u001B[32m519\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m MaxRetryError(_pool, url, reason) \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34;01mreason\u001B[39;00m \u001B[38;5;66;03m# type: ignore[arg-type]\u001B[39;00m\n\u001B[32m 521\u001B[39m log.debug(\u001B[33m\"\u001B[39m\u001B[33mIncremented Retry for (url=\u001B[39m\u001B[33m'\u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[33m'\u001B[39m\u001B[33m): \u001B[39m\u001B[38;5;132;01m%r\u001B[39;00m\u001B[33m\"\u001B[39m, url, new_retry)\n", "\u001B[31mMaxRetryError\u001B[39m: HTTPSConnectionPool(host='dbrepo.example.com', port=443): Max retries exceeded with url: /api/database/71183815-021d-40d1-884e-3e58bd43b169/table/0b533238-e73e-43ec-a773-04ed75349b7a/data?page=0&size=10 (Caused by NameResolutionError(\": Failed to resolve 'dbrepo.example.com' ([Errno -2] Name or service not known)\"))", "\nDuring handling of the above exception, another exception occurred:\n", "\u001B[31mConnectionError\u001B[39m Traceback (most recent call last)", "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[12]\u001B[39m\u001B[32m, line 1\u001B[39m\n\u001B[32m----> \u001B[39m\u001B[32m1\u001B[39m deployments = \u001B[43mclient\u001B[49m\u001B[43m.\u001B[49m\u001B[43mget_table_data\u001B[49m\u001B[43m(\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43m71183815-021d-40d1-884e-3e58bd43b169\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43m0b533238-e73e-43ec-a773-04ed75349b7a\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[32m 2\u001B[39m display(deployments)\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/dbrepo/RestClient.py:872\u001B[39m, in \u001B[36mRestClient.get_table_data\u001B[39m\u001B[34m(self, database_id, table_id, page, size, timestamp)\u001B[39m\n\u001B[32m 870\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m timestamp \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[32m 871\u001B[39m params.append((\u001B[33m'\u001B[39m\u001B[33mtimestamp\u001B[39m\u001B[33m'\u001B[39m, timestamp.strftime(\u001B[33m\"\u001B[39m\u001B[33m%\u001B[39m\u001B[33mY-\u001B[39m\u001B[33m%\u001B[39m\u001B[33mm-\u001B[39m\u001B[38;5;132;01m%d\u001B[39;00m\u001B[33mT\u001B[39m\u001B[33m%\u001B[39m\u001B[33mH:\u001B[39m\u001B[33m%\u001B[39m\u001B[33mM:\u001B[39m\u001B[33m%\u001B[39m\u001B[33mSZ\u001B[39m\u001B[33m\"\u001B[39m)))\n\u001B[32m--> \u001B[39m\u001B[32m872\u001B[39m response = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_wrapper\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mget\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m=\u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mparams\u001B[49m\u001B[43m=\u001B[49m\u001B[43mparams\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m=\u001B[49m\u001B[43m{\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mAccept\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m:\u001B[49m\u001B[43m \u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mapplication/json\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m}\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 873\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m response.status_code == \u001B[32m200\u001B[39m:\n\u001B[32m 874\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m DataFrame.from_records(response.json())\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/dbrepo/RestClient.py:76\u001B[39m, in \u001B[36mRestClient._wrapper\u001B[39m\u001B[34m(self, method, url, params, payload, headers, force_auth, files)\u001B[39m\n\u001B[32m 74\u001B[39m auth = (\u001B[38;5;28mself\u001B[39m.username, \u001B[38;5;28mself\u001B[39m.password)\n\u001B[32m 75\u001B[39m logging.debug(\u001B[33mf\u001B[39m\u001B[33m'\u001B[39m\u001B[33mconfigured for basic auth: username=\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m.username\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m, password=(hidden)\u001B[39m\u001B[33m'\u001B[39m)\n\u001B[32m---> \u001B[39m\u001B[32m76\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mrequests\u001B[49m\u001B[43m.\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m=\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m=\u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mauth\u001B[49m\u001B[43m=\u001B[49m\u001B[43mauth\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mverify\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43msecure\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 77\u001B[39m \u001B[43m \u001B[49m\u001B[43mjson\u001B[49m\u001B[43m=\u001B[49m\u001B[43mpayload\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m=\u001B[49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mparams\u001B[49m\u001B[43m=\u001B[49m\u001B[43mparams\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfiles\u001B[49m\u001B[43m=\u001B[49m\u001B[43mfiles\u001B[49m\u001B[43m)\u001B[49m\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/requests/api.py:59\u001B[39m, in \u001B[36mrequest\u001B[39m\u001B[34m(method, url, **kwargs)\u001B[39m\n\u001B[32m 55\u001B[39m \u001B[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001B[39;00m\n\u001B[32m 56\u001B[39m \u001B[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001B[39;00m\n\u001B[32m 57\u001B[39m \u001B[38;5;66;03m# cases, and look like a memory leak in others.\u001B[39;00m\n\u001B[32m 58\u001B[39m \u001B[38;5;28;01mwith\u001B[39;00m sessions.Session() \u001B[38;5;28;01mas\u001B[39;00m session:\n\u001B[32m---> \u001B[39m\u001B[32m59\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43msession\u001B[49m\u001B[43m.\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m=\u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m=\u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/requests/sessions.py:589\u001B[39m, in \u001B[36mSession.request\u001B[39m\u001B[34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001B[39m\n\u001B[32m 584\u001B[39m send_kwargs = {\n\u001B[32m 585\u001B[39m \u001B[33m\"\u001B[39m\u001B[33mtimeout\u001B[39m\u001B[33m\"\u001B[39m: timeout,\n\u001B[32m 586\u001B[39m \u001B[33m\"\u001B[39m\u001B[33mallow_redirects\u001B[39m\u001B[33m\"\u001B[39m: allow_redirects,\n\u001B[32m 587\u001B[39m }\n\u001B[32m 588\u001B[39m send_kwargs.update(settings)\n\u001B[32m--> \u001B[39m\u001B[32m589\u001B[39m resp = \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43msend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprep\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43msend_kwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 591\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m resp\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/requests/sessions.py:703\u001B[39m, in \u001B[36mSession.send\u001B[39m\u001B[34m(self, request, **kwargs)\u001B[39m\n\u001B[32m 700\u001B[39m start = preferred_clock()\n\u001B[32m 702\u001B[39m \u001B[38;5;66;03m# Send the request\u001B[39;00m\n\u001B[32m--> \u001B[39m\u001B[32m703\u001B[39m r = \u001B[43madapter\u001B[49m\u001B[43m.\u001B[49m\u001B[43msend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 705\u001B[39m \u001B[38;5;66;03m# Total elapsed time of the request (approximately)\u001B[39;00m\n\u001B[32m 706\u001B[39m elapsed = preferred_clock() - start\n", "\u001B[36mFile \u001B[39m\u001B[32m~/Projects/fda-services/dbrepo-search-service/venv/lib/python3.11/site-packages/requests/adapters.py:700\u001B[39m, in \u001B[36mHTTPAdapter.send\u001B[39m\u001B[34m(self, request, stream, timeout, verify, cert, proxies)\u001B[39m\n\u001B[32m 696\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(e.reason, _SSLError):\n\u001B[32m 697\u001B[39m \u001B[38;5;66;03m# This branch is for urllib3 v1.22 and later.\u001B[39;00m\n\u001B[32m 698\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m SSLError(e, request=request)\n\u001B[32m--> \u001B[39m\u001B[32m700\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mConnectionError\u001B[39;00m(e, request=request)\n\u001B[32m 702\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m ClosedPoolError \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[32m 703\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mConnectionError\u001B[39;00m(e, request=request)\n", "\u001B[31mConnectionError\u001B[39m: HTTPSConnectionPool(host='dbrepo.example.com', port=443): Max retries exceeded with url: /api/database/71183815-021d-40d1-884e-3e58bd43b169/table/0b533238-e73e-43ec-a773-04ed75349b7a/data?page=0&size=10 (Caused by NameResolutionError(\": Failed to resolve 'dbrepo.example.com' ([Errno -2] Name or service not known)\"))" ] } ], "execution_count": 12 }, { "cell_type": "markdown", "id": "39095623-65a4-4de9-bbab-419946e5c428", "metadata": {}, "source": [ "Import data from a `pandas` DataFrame." ] }, { "cell_type": "code", "execution_count": null, "id": "f85f8c85-16f9-4b42-88af-e5a50b4729e4", "metadata": {}, "outputs": [], "source": [ "# optional: update table data from `pandas` DataFrame\n", "# df = DataFrame()\n", "# client.import_table_data('71183815-021d-40d1-884e-3e58bd43b169', '0b533238-e73e-43ec-a773-04ed75349b7a', df)" ] }, { "cell_type": "markdown", "id": "9098ea798a2ab598", "metadata": {}, "source": [ "## Views\n", "\n", "Load data from any view into a `pandas` DataFrame." ] }, { "cell_type": "code", "execution_count": null, "id": "ddd433035e632df9", "metadata": { "ExecuteTime": { "end_time": "2025-06-04T07:30:53.066871019Z", "start_time": "2024-12-14T07:22:44.708283Z" } }, "outputs": [], "source": [ "beton_acc = client.get_view_data(database_id, 'view_id_str', 100000)\n", "beton_acc\n", "\n", "# optional: export view data as .csv\n", "# beton_acc.to_csv('beton_acc.csv')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }