---
# System prepended metadata

title: M06 Accés a dades. Intro a mysql amb python.
tags: [' python', DAM, ' M6']

---

---
title: M06 Accés a dades. Intro a mysql amb python.
tags: DAM, python, M6
---

<div style="width: 30%; margin-left: auto;">
    
![](https://hackmd.io/_uploads/HJiR4eGJT.png)    
    
</div>



<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Llicència de Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />Aquesta obra està subjecta a una llicència de <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Reconeixement-CompartirIgual 4.0 Internacional de Creative Commons</a>

# M06 Accés a dades. Intro a mysql amb python.
## Instal·lació de dependències i adequació de l'entorn.
Abans de començar a treballar amb mysql amb python necessitem instal·lar dos mòduls: **'python3-mysqldb'** i **'python3-mysql.connector'**.
```bash=
$ sudo apt install python3-mysqldb python3-mysql.connector 
```
I si volem que la nostra màquina sigui alhora el SGBD, també necessitem instal·lar el servidor de mysql o de mariadb i tampoc estaria de més instal·lar també el client.
```bash=
$ sudo apt install mariadb-server mariadb-client
```
Ara ja podem accedir all nostre SGBD com a usuari root.
```bash=
$ sudo mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.11.4-MariaDB-1 Ubuntu 23.10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

```

No hem d'utilitzar mai aquest usuari des dels nostres programes, hem de crear usuaris específics per a cada aplicació per motius de seguretat.

Exemple de creació de la base de dades **dam_m6** i l'usuari **dam_app** per simplicitat, en aquest mòdul utilitzarem tots el mateix nom per a la base de dades, el mateix nom d'usuari i el mateix password que serà '1234':
```=
MariaDB [(none)]> create database dam_m6;
Query OK, 1 row affected (0,001 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| dam_m6             |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0,001 sec)

MariaDB [(none)]> create user 'dam_app'@'localhost' identified by '1234';
Query OK, 0 rows affected (0,010 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON dam_m6.* TO 'dam_app'@'localhost' WITH
 GRANT OPTION;
Query OK, 0 rows affected (0,009 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0,001 sec)

MariaDB [(none)]> quit
Bye
```
I a partir d'ara utilitzarem aquest usuari per a gestiona aquesta base de dades:
```
$ mysql -u dam_app -p dam_m6
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.11.4-MariaDB-1 Ubuntu 23.10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [dam_m6]> 
```
:fireworks: Tot preparat per a començar a utilitzar la nostra base de dades.

## Provant el nou SGBD i la seva connexió des de python.
```python=
import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="dam_app",
  password="1234"
)

print(mydb) 
```
Exemple extret de: [w3schools](https://www.w3schools.com/python/python_mysql_getstarted.asp)
