{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "id": "JL3VAYEhHMzY" }, "outputs": [], "source": [ "import pandas as pd\n", "from sqlalchemy import create_engine, text\n", "import cred_pg as c\n", "\n", "# None = unbegrenzt\n", "pd.set_option(\"display.max_rows\", 50)\n", "pd.set_option(\"display.max_columns\", None)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "engine = create_engine(\n", " f'postgresql+psycopg://{c.pg_userid}:{c.pg_password}@{c.pg_host}/{c.pg_db}', \n", " connect_args = {\n", " 'options': '-c search_path=${user},ugeobln,ugm,uinsta,umisc,umobility,usozmed,public', \n", " 'keepalives_idle': 120\n", " },\n", " pool_size=1, \n", " max_overflow=0,\n", " execution_options={ 'isolation_level': 'AUTOCOMMIT' }\n", ")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "OnPPyzHk4_WN" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rolname
0ucla
1ugeobln
2ugm
3uinsta
4umisc
5umobility
6usozmed
\n", "
" ], "text/plain": [ " rolname\n", "0 ucla\n", "1 ugeobln\n", "2 ugm\n", "3 uinsta\n", "4 umisc\n", "5 umobility\n", "6 usozmed" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with engine.connect() as con:\n", " sql = \"select rolname from pg_roles where rolname like 'u%'\"\n", " df = pd.read_sql_query(text(sql), con)\n", "df" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
schemanametablename
0uclaGrade
1uclaTextModule
2uclaUserData
3uclacv
4uclafood
.........
69usozmedperson_studyat_university
70usozmedperson_workat_company
71usozmedtag
72usozmedtagclass
73usozmeduniversity
\n", "

74 rows × 2 columns

\n", "
" ], "text/plain": [ " schemaname tablename\n", "0 ucla Grade\n", "1 ucla TextModule\n", "2 ucla UserData\n", "3 ucla cv\n", "4 ucla food\n", ".. ... ...\n", "69 usozmed person_studyat_university\n", "70 usozmed person_workat_company\n", "71 usozmed tag\n", "72 usozmed tagclass\n", "73 usozmed university\n", "\n", "[74 rows x 2 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with engine.connect() as con:\n", " sql = \"\"\"\n", " select schemaname, tablename \n", " from pg_tables \n", " where schemaname like 'u%'\n", " order by schemaname, tablename\n", " \"\"\"\n", " df = pd.read_sql_query(text(sql), con)\n", "df" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "l_WJVUkJkCvE" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
anzahl
jahr
2010780
2011780
2012780
2013780
2014780
2015780
2016780
2017780
2018780
2019780
\n", "
" ], "text/plain": [ " anzahl\n", "jahr \n", "2010 780\n", "2011 780\n", "2012 780\n", "2013 780\n", "2014 780\n", "2015 780\n", "2016 780\n", "2017 780\n", "2018 780\n", "2019 780" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with engine.connect() as con:\n", " sql = \"\"\"\n", " with\n", " spy as (\n", " select extract(year from sales_month) as jahr\n", " from retail_sales\n", " )\n", " select jahr, count(*) as anzahl\n", " from spy\n", " where jahr >= 2010\n", " group by jahr\n", " order by jahr\n", " \"\"\"\n", " df = pd.read_sql_query(text(sql), con)\n", "df.jahr = df.jahr.astype('int32')\n", "df.set_index('jahr', inplace = True)\n", "df" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "l_WJVUkJkCvE" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAHGCAYAAABeq3DqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3XUlEQVR4nO3de3RU5b3/8c9MQhISmMTkmBlSSMBWhXCRFhRGqCKmRows0fQCh2pUhCMGLXBAyU9EDSqKVhRPlANFwIUUdR31FA6iEC+0JdxiaZFoBJUGxUlaMYmAuT+/PzzMceSWgcA82b5fa+21svfzzOzvN5sNH/bsmXEZY4wAAAAs4o50AQAAAN9FQAEAANYhoAAAAOsQUAAAgHUIKAAAwDoEFAAAYB0CCgAAsA4BBQAAWCc60gWcjJaWFu3bt0+dO3eWy+WKdDkAAKAVjDH66quvlJaWJrf7+NdI2mVA2bdvn7p16xbpMgAAwEnYu3evunbtetw57TKgdO7cWdI3DXo8nghXAwAAWqO2tlbdunUL/jt+PO0yoBx+Wcfj8RBQAABoZ1pzewY3yQIAAOuEFVCam5t1zz33qEePHurYsaN++MMfavbs2fr2FyIbYzRr1ix16dJFHTt2VFZWlnbt2hXyPPv379fYsWPl8XiUlJSkcePG6cCBA23TEQAAaPfCCiiPPPKInnnmGf3Hf/yH3n//fT3yyCOaO3eunnrqqeCcuXPnav78+VqwYIE2b96shIQEZWdnq66uLjhn7Nix2rlzp9atW6fVq1drw4YNmjBhQtt1BQAA2jWX+fbljxO4+uqr5fV6tXjx4uC23NxcdezYUcuXL5cxRmlpafr3f/93TZs2TZJUU1Mjr9erpUuXavTo0Xr//feVmZmprVu3auDAgZKktWvX6qqrrtKnn36qtLS0E9ZRW1urxMRE1dTUcA8KAOCYmpub1djYGOkyvjc6dOigqKioY46H8+93WDfJXnzxxVq4cKE+/PBDnXfeefrrX/+qP/3pT3r88cclSZ988okCgYCysrKCj0lMTNSgQYNUUlKi0aNHq6SkRElJScFwIklZWVlyu93avHmzrr322iP2W19fr/r6+pAGAQA4FmOMAoGAqqurI13K905SUpJ8Pt8pf05ZWAFlxowZqq2tVc+ePRUVFaXm5mY9+OCDGjt2rCQpEAhIkrxeb8jjvF5vcCwQCCg1NTW0iOhoJScnB+d815w5c3T//feHUyoA4HvscDhJTU1VfHw8H+p5BhhjdOjQIVVVVUmSunTpckrPF1ZAefHFF/X8889rxYoV6t27t7Zv367JkycrLS1NeXl5p1TI8RQUFGjq1KnB9cPvowYA4Luam5uD4SQlJSXS5XyvdOzYUZJUVVWl1NTU477ccyJhBZTp06drxowZGj16tCSpb9+++vvf/645c+YoLy9PPp9PklRZWRmSnCorK9W/f39Jks/nC6arw5qamrR///7g478rNjZWsbGx4ZQKAPieOnzPSXx8fIQr+X46/HtvbGw8pYAS1rt4Dh06dMRn50dFRamlpUWS1KNHD/l8PhUXFwfHa2trtXnzZvn9fkmS3+9XdXW1SktLg3PefPNNtbS0aNCgQSfdCAAA38bLOpHRVr/3sK6gjBw5Ug8++KDS09PVu3dv/eUvf9Hjjz+um2++OVjU5MmT9cADD+jcc89Vjx49dM899ygtLU2jRo2SJPXq1UtXXnmlxo8frwULFqixsVGTJk3S6NGjW/UOHgAA4HxhXUF56qmn9POf/1y33XabevXqpWnTpunf/u3fNHv27OCcO++8U7fffrsmTJigCy+8UAcOHNDatWsVFxcXnPP888+rZ8+euvzyy3XVVVdp6NChWrhwYdt1BQAAwrZ06VIlJSUdd86NN94YvOhwOoV1BaVz58564okn9MQTTxxzjsvlUmFhoQoLC485Jzk5WStWrAhn1wAAnLLuM/7njO1rz8M5Z2xfTsR38QAAAOsQUAAAsMTatWs1dOhQJSUlKSUlRVdffbU++ugjSdKePXvkcrn08ssv67LLLlN8fLwuuOAClZSUBB8/bNgwuVyuI5Y9e/ZIkh5//HH17dtXCQkJ6tatm2677bajfhfe66+/rl69eqlTp0668sor9fnnn5+R/r8trJd42rMzcVnvTFzOo4/WcUIPEn20lhN6kOijtdrLSyd/+7T6uOP9uiYdse3gwYOaOnWq+vXrpwMHDmjWrFm69tprtX379uCcu+++W4899pjOPfdc3X333RozZox2796t6Ohovfzyy2poaAjO/fXNE/TRhx+oqjFWtZ9WK1Bbr9/c85B+0C1Dn1bs0UN3T9MXB36jux/6rSRp7/5DOnjokO578GHNeuxpud1u/b/f/Jtuue0OzXlqkSTpy4MN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888/r0mTJunyyy+X2+1Wbm6u5s+f33ZdAQCAdi2sgCJJV199ta6++upjjrtcLhUWFqqwsPCYc5KTk7VixYpwdw0AAL4n+C4eAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALAOAQUAAFiHgAIAAKxDQAEAANYhoAAAAOsQUAAAgHUIKAAAwDoEFAAAYB0CCgAAsA4BBQAAWIeAAgAArENAAQAA1iGgAAAA6xBQAACAdQgoAADAOgQUAABgHQIKAACwDgEFAABYh4ACAACsQ0ABAADWIaAAAADrEFAAAIB1CCgAAMA6BBQAAGAdAgoAALBOWAHlvvvuk8vlCll69uwZHK+rq1N+fr5SUlLUqVMn5ebmqrKyMuQ5KioqlJOTo/j4eKWmpmr69Olqampqm24AAIAjRIf7gN69e2v9+vX/9wTR//cUU6ZM0f/8z//opZdeUmJioiZNmqTrrrtOf/7znyVJzc3NysnJkc/n08aNG/X555/rhhtuUIcOHfTQQw+1QTsAAMAJwg4o0dHR8vl8R2yvqanR4sWLtWLFCg0fPlyStGTJEvXq1UubNm3S4MGD9cYbb6isrEzr16+X1+tV//79NXv2bN1111267777FBMTc+odAQCAdi/se1B27dqltLQ0nXPOORo7dqwqKiokSaWlpWpsbFRWVlZwbs+ePZWenq6SkhJJUklJifr27Suv1xuck52drdraWu3cufNUewEAAA4R1hWUQYMGaenSpTr//PP1+eef6/7779dPf/pTvffeewoEAoqJiVFSUlLIY7xerwKBgCQpEAiEhJPD44fHjqW+vl719fXB9dra2nDKBgAA7UxYAWXEiBHBn/v166dBgwYpIyNDL774ojp27NjmxR02Z84c3X///aft+QEAgF1O6W3GSUlJOu+887R79275fD41NDSouro6ZE5lZWXwnhWfz3fEu3oOrx/tvpbDCgoKVFNTE1z27t17KmUDAADLnVJAOXDggD766CN16dJFAwYMUIcOHVRcXBwcLy8vV0VFhfx+vyTJ7/drx44dqqqqCs5Zt26dPB6PMjMzj7mf2NhYeTyekAUAADhXWC/xTJs2TSNHjlRGRob27dune++9V1FRURozZowSExM1btw4TZ06VcnJyfJ4PLr99tvl9/s1ePBg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crmCAWXo0KFmxowZIeMPPvigGTx4cCRKa7WuXbuad9991xhjzC233GJ+/OMfm3fffdd8/fXXZvv27Wbw4MFm3LhxEa7yxA4fi+3bt5tJkyaZ5ORkExMTY6677jqzZs0a09LSEukSWyU3N9dceumlZtWqVeaXv/ylGTJkiBk2bJj59NNPzb59+0x2drYZNWpUpMs8rkcffdSkpaWZp556yixatMj06tXLFBYWmtdee81cf/31Jj4+3mzdujWiNRJQjDFxcXGmrKzsmOM7d+40HTt2PIMVhe/aa6897jJ8+PB28Q97QkKC+fjjj0O2vfnmm6ZTp07mmWeeaTcBJS4uzlRUVISsv//++8H1jz/+2HTu3DkSpbXarl27zIUXXmhuuOEG89VXXwW3R0dHm507d0awsvB8O6CkpqYe8T/DDz74wCQlJUWitFaLjY01e/bsMcYY0717d/POO++EjG/bts106dIlEqWF5dvHwhhj6urqzIoVK8zll19u3G636dq1q7nnnnsiWGHrnH322eYvf/mLMcaY6upq43K5zB//+MfgeGlpqfF6vRGqrnW6d+9u1qxZE1wvLy83KSkpprGx0RhjzB133GF+9rOfRao8Y4wx3IMi6cILL9TDDz+spqamI8aam5v1yCOP6MILL4xAZa23atUq1dXVKTEx8ahLp06dIl1iq3g8HlVWVoZsu+yyy7R69WpNnz5dTz31VIQqC09iYqKqq6uD6z/5yU/UuXPn4Hp9fb1cLlcEKmu9H/3oR9q4caN8Pp/69++vP//5z5Eu6aSVlZXpb3/7mzp27KiWlpYjxo927tskIyND7733niTJ5XIpOjr0a9SioqJ08ODBSJQWlu/+mY+NjdWYMWO0fv16ffTRR7rxxhu1dOnSyBQXhsN/10rf3FcTFRUVcn57PB4dOnQoUuW1SlVVlXr16hVcP/fcc1VTU6N//OMfkqSbb75ZJSUlkSrvGxGNR5b461//anw+n0lJSTHXXnutufXWW82tt95qrr32WpOSkmK6dOliduzYEekyj6tv377Bl0GO5i9/+Uu7uPJwzTXXmFmzZh117K233jIJCQntoo/LLrvsuC9/vPjii2bAgAFnsKJTU1xcbNLT001BQYHp0KFDu7uC4na7g/cHzJs3L2T897//vcnMzIxMca306KOPml69epldu3aZ3/72t8bv95vd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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot.bar()" ] } ], "metadata": { "colab": { "authorship_tag": "ABX9TyP3hR/iaTVoa5T0jiLCYqvi", "collapsed_sections": [], "mount_file_id": "160Y7soBv-ooFoji_K8JAkM2juqMAPdfE", "name": "intro-cla.ipynb", "provenance": [ { "file_id": "160Y7soBv-ooFoji_K8JAkM2juqMAPdfE", "timestamp": 1647272627451 } ] }, "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.12.6" }, "vscode": { "interpreter": { "hash": "2d6fa041adfecd6e27df7d45c6447a3fc1437381c85a5efcc15b960708d9d702" } } }, "nbformat": 4, "nbformat_minor": 4 }