From 7b70172bac0c6894ca251d046a0a686e720fde3d Mon Sep 17 00:00:00 2001 From: majidrouhanintnu <42731301+majidrouhanintnu@users.noreply.github.com> Date: Mon, 10 Apr 2023 11:08:51 +0200 Subject: [PATCH] upd --- lectures/lecture5/notes/codes/databaser.ipynb | 146 ++++++++++++++++++ lectures/lecture5/notes/slides/lecture-5.md | 2 + lectures/lectures.json | 2 +- 3 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 lectures/lecture5/notes/codes/databaser.ipynb diff --git a/lectures/lecture5/notes/codes/databaser.ipynb b/lectures/lecture5/notes/codes/databaser.ipynb new file mode 100644 index 0000000..57483a2 --- /dev/null +++ b/lectures/lecture5/notes/codes/databaser.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### MySQL database\n", + "\n", + "Man kan koble opp mot forskjellige databaser i Python:\n", + "- GadFly\n", + "- mSQL\n", + "- **MySQL**\n", + "- PostgreSQL\n", + "- Microsoft SQL Server 2000\n", + "- Informix\n", + "- Interbase\n", + "- Oracle\n", + "- Sybase\n", + "- …\n", + "\n", + "Eller bruke SqlLite3 \n", + "- Egen database modul for Python\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Viser hvordan vi kobler oss mot MySQL og leser/oppdaterer data.\n", + "# Må installere PyMySQL først: pip install pymysql\n", + "import pymysql" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For å logge oss inn på databasen, må vi ha en konto på database-serveren.\n", + "\n", + "Følgende informasjon må vi ha:\n", + "\n", + "- host: navn på database-server\n", + "- user: brukernavn for å koble oss til serveren\n", + "- password: passord for å koble oss til serveren\n", + "- database: database seed (en database server kan inneholde mange database instanser)\n", + "\n", + "Dersom vi ikke ønsker å \"hardkode\" passord (skrive det i programmet i klar tekst eller i en fil), kan vi bruke modulen **getPass** for å taste inn passordet når programmet starter.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# importer funksjonen getpass fra modulen getpass.\n", + "# Vi bruker getpass for å lese passord fra bruker (slik at det ikke vises i klartekst)\n", + "from getpass import getpass" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "# Definer variabler for oppkoblingsparameteret\n", + "my_host = \"mysql.stud.iie.ntnu.no\"\n", + "my_user = \"rouhani\" # Skriv inn brukernavnet ditt her\n", + "my_password = getpass()\n", + "my_database = \"rouhani\"" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Koble opp mot databasen og les fra en tabell" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "with pymysql.connect(host = my_host, user = my_user, password = my_password, database = my_database) as my_db:\n", + " my_cursor = my_db.cursor()\n", + "\n", + " my_sql = \"SELECT regnr,navn,regdato,regav FROM gjenstand\"\n", + " my_cursor.execute(my_sql)\n", + "\n", + " for row in my_cursor:\n", + " print(row)\n", + "\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Koble opp mot databasen og oppdater rader i en tabell\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Koble opp mot databasen og fjern rader fra en tabell" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lectures/lecture5/notes/slides/lecture-5.md b/lectures/lecture5/notes/slides/lecture-5.md index 9ce55e5..430cc86 100644 --- a/lectures/lecture5/notes/slides/lecture-5.md +++ b/lectures/lecture5/notes/slides/lecture-5.md @@ -10,6 +10,8 @@ paginate: true **Læringsutbytte** * Lære å lese fra og skrive til fil +* Lære om unntakshåndtering og kjøretidsfeil +* Lære å koble seg mot MySql database --- diff --git a/lectures/lectures.json b/lectures/lectures.json index 9d1f8dd..cc89e12 100644 --- a/lectures/lectures.json +++ b/lectures/lectures.json @@ -58,7 +58,7 @@ ] }, { - "Leksjon 5: Filbehandling, unntakshåndtering": [ + "Leksjon 5: Filbehandling, unntakshåndtering, programmering mot databaser": [ {"Introduksjon (slides)": {"Introduksjon":"lecture5/notes/slides/lecture-5.pdf"}} ,{ "Filbehandling": [ -- GitLab