Preparation de l'environnement¶
In [9]:
Copied!
%load_ext sql
%sql sqlite:///ma_base.db
%load_ext sql
%sql sqlite:///ma_base.db
The sql extension is already loaded. To reload it, use: %reload_ext sql
Le chemin d'accès
Cette command évite d'avoir certaines erreurs dans les commandes SELECT.
In [10]:
Copied!
%config SqlMagic.style = '_DEPRECATED_DEFAULT'
%config SqlMagic.style = '_DEPRECATED_DEFAULT'
Avec Sqlite, pas besoin de définir une colonne id en autoincrement car elle sera moins optimisée que la colonne rowid par défaut.
In [11]:
Copied!
%%sql
CREATE TABLE users (
name VARCHAR(100),
age INT
);
%%sql
CREATE TABLE users (
name VARCHAR(100),
age INT
);
* sqlite:///ma_base.db
(sqlite3.OperationalError) table users already exists
[SQL: CREATE TABLE users (
name VARCHAR(100),
age INT
);]
(Background on this error at: https://sqlalche.me/e/20/e3q8)
On peut écrire des commandes SQL directement dans les cellules Jupyter en utilisant la magie %%sql pour du multi-lignes ou %sql pour du simple-ligne.
In [15]:
Copied!
%sql INSERT INTO USERS(name, age) values ('SQL', 20)
%sql INSERT INTO USERS(name, age) values ('Python', 40)
%sql INSERT INTO USERS(name, age) values ('SQL', 20)
%sql INSERT INTO USERS(name, age) values ('Python', 40)
* sqlite:///ma_base.db 1 rows affected. * sqlite:///ma_base.db 1 rows affected.
Out[15]:
[]
In [13]:
Copied!
%sql SELECT rowid, * FROM USERS;
%sql SELECT rowid, * FROM USERS;
* sqlite:///ma_base.db Done.
Out[13]:
| rowid | name | age |
|---|---|---|
| 1 | SQL | 20 |
| 2 | SQL | 20 |
| 3 | Python | 40 |
In [14]:
Copied!
%%sql
SELECT rowid, * FROM USERS
where age > 20;
%%sql
SELECT rowid, * FROM USERS
where age > 20;
* sqlite:///ma_base.db Done.
Out[14]:
| rowid | name | age |
|---|---|---|
| 3 | Python | 40 |