From 3646aee8d3c8a824ea9083bedaa378cac71ccc6e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7oise=20Conil?= <francoise.conil@insa-lyon.fr>
Date: Fri, 16 Dec 2022 18:01:06 +0100
Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation,=20acc=C3=A8s=20direct=20et=20en?=
 =?UTF-8?q?=20Python=20=C3=A0=20une=20base=20SQLite?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 basic-bd/acces_base_de_donnees.py |  73 ++++++++++++++++++++++++++
 basic-bd/basket.db                | Bin 0 -> 12288 bytes
 basic-bd/cree_basket_bd.md        |  18 +++++++
 basic-bd/cree_basket_bd.sql       |   4 ++
 basic-bd/requetes.sql             |  19 +++++++
 requirements-dev.in               |   5 ++
 requirements-dev.txt              |  82 ++++++++++++++++++++++++++++++
 requirements.in                   |   5 ++
 requirements.txt                  |  55 ++++++++++++++++++++
 9 files changed, 261 insertions(+)
 create mode 100644 basic-bd/acces_base_de_donnees.py
 create mode 100644 basic-bd/basket.db
 create mode 100644 basic-bd/cree_basket_bd.md
 create mode 100644 basic-bd/cree_basket_bd.sql
 create mode 100644 basic-bd/requetes.sql
 create mode 100644 requirements-dev.in
 create mode 100644 requirements-dev.txt
 create mode 100644 requirements.in
 create mode 100644 requirements.txt

diff --git a/basic-bd/acces_base_de_donnees.py b/basic-bd/acces_base_de_donnees.py
new file mode 100644
index 0000000..a68b2db
--- /dev/null
+++ b/basic-bd/acces_base_de_donnees.py
@@ -0,0 +1,73 @@
+from sqlalchemy.ext.declarative import declarative_base
+
+from sqlalchemy import create_engine
+from sqlalchemy.orm import scoped_session, sessionmaker
+from sqlalchemy import Column, Integer, String
+
+Base = declarative_base()
+
+template = f"""<!DOCTYPE html>
+<html lang="fr">
+  <head>
+    <meta charset="utf-8">
+    <title>Baskets Nike</title>
+  </head>
+  <body>
+    <h1>Liste des modèle Nike disponible</h1>
+    <h2>Le métier d'ingénieur</h2>
+    <p>Bonjour</p>
+    <ol>
+       <li>BAC L</li>
+       <li>BAC ES</li>
+       <li>BAC S</li>
+    <ol>
+    <p><img src="protocole-http.png"></p>
+  </body>
+</html>
+"""
+
+base = """<!DOCTYPE html>
+<html lang="fr">
+  <head>
+    <meta charset="utf-8">
+    <title>Baskets Nike</title>
+  </head>
+  <body>
+    <h1>Liste des modèle Nike disponibles</h1>"""
+
+fin = """</body>
+</html>
+"""
+
+class BasketNike(Base):
+    __tablename__ = 'nike'
+
+    id = Column(Integer, primary_key=True)
+    modele = Column(String)
+    couleur = Column(String)
+    image = Column(String)
+    stock = Column(Integer)
+
+    def __repr__(self):
+        return "{0} : modèle {1}, couleur {2}, stock {3}".format(
+            self.id,
+            self.modele,
+            self.couleur,
+            self.stock
+        )
+
+if __name__ == '__main__':
+    engine = create_engine("sqlite:///basket.db", echo=False)
+    DBSession = scoped_session(sessionmaker())
+    DBSession.configure(bind=engine, autoflush=False, expire_on_commit=False)
+
+    print(base)
+    for b in DBSession.query(BasketNike).all():
+        print(f"""<div>
+        <div id="modele">{b.modele}</div>
+        <div id="stock">couleur: {b.couleur}, stock: {b.stock}</div>
+        <div id="image_basket"><img src="./{b.image}"></div>
+        </div>
+        """)
+
+    print(fin)
diff --git a/basic-bd/basket.db b/basic-bd/basket.db
new file mode 100644
index 0000000000000000000000000000000000000000..75c3b0bc68599099ad7c60a28ba5adab625e0ab4
GIT binary patch
literal 12288
zcmeI%y-piJ5C`zxJ1`LvIvUFb2u*3r1_fNuVj@@ID1cL>IxXkHS?<fM_asxK;5~Q&
zI^Kbj_o2?NKO%)DDWm8=y7k?zXZECDH+xqX=h`yelqOe}x?)>MDNcxl5NmFPZmdGO
z2fwxoKmSv#iG$teEteHUdm@^+9|Qy-009U<00Izz00bZa0SG|gpA+~J)Ee!!{ASg4
z#?!mZwaW37?<y{m_tWsxWxqG<)3A4X-luoD%|hkeah0uyExFOC*X6^H`JRPN*^l72
zYQI8FJtAFL9<!l|(YZ4Bl=3~P%9grF4Ch?f4&~*DGbYP3H%ZDW<H{^&u4cUYXKKqN
z{k7kSZ&a08`q=Wlc^G{a(QEYRZU_iK00Izz00bZa0SG_<0uX=z1pZc_AJ)WiyC*;U
zKE9_74b+SVY*m)&WK^1$rw%DIcK!RylkfForA?fxS)4C(4sItr4)%kZXf?WvZ3bsY
zG~~1>-ARNyfACd#dK6o~G*4ge%9_~UIbNi@9sNiBgz4})Q$_N9QQ}`TUycvwMVr3=
om(iPW7XkthfB*y_009U<00Izz00bZaf&WV2gAD7^pCN=l0W46JmH+?%

literal 0
HcmV?d00001

diff --git a/basic-bd/cree_basket_bd.md b/basic-bd/cree_basket_bd.md
new file mode 100644
index 0000000..cbeea93
--- /dev/null
+++ b/basic-bd/cree_basket_bd.md
@@ -0,0 +1,18 @@
+# Créer la base à partir d'instructions SQL
+
+```shell
+$ sqlite3 basket.db
+SQLite version 3.37.2 2022-01-06 13:25:41
+Enter ".help" for usage hints.
+sqlite> 
+```
+
+```sqlite
+sqlite> .read cree_basket_bd.sql
+sqlite> .tables
+nike
+sqlite> select * from nike;
+1|Nike air force 1|blanche|nike_air_force_1.jpeg|10
+2|Nike MK2 Tekno|bleue|nike_mk2_tekno.jpeg|5
+3|Nike Air Max Metallic|doré, argenté|nike_air_max_metallic.jpeg|2
+```
diff --git a/basic-bd/cree_basket_bd.sql b/basic-bd/cree_basket_bd.sql
new file mode 100644
index 0000000..7b1e905
--- /dev/null
+++ b/basic-bd/cree_basket_bd.sql
@@ -0,0 +1,4 @@
+CREATE TABLE nike (id integer primary key autoincrement, modele text, couleur text, image text, stock integer default 0);
+INSERT INTO nike (modele, couleur, image, stock) values ("Nike air force 1", "blanche", "nike_air_force_1.jpeg", 10);
+INSERT INTO nike (modele, couleur, image, stock) values ("Nike MK2 Tekno", "bleue", "nike_mk2_tekno.jpeg", 5);
+INSERT INTO nike (modele, couleur, image, stock) values ("Nike Air Max Metallic", "doré, argenté", "nike_air_max_metallic.jpeg", 2);
diff --git a/basic-bd/requetes.sql b/basic-bd/requetes.sql
new file mode 100644
index 0000000..c2298a4
--- /dev/null
+++ b/basic-bd/requetes.sql
@@ -0,0 +1,19 @@
+.mode column
+.headers on
+
+CREATE TABLE nike (id integer primary key autoincrement, modele text, couleur text, image text, stock integer default 0);
+
+.schema
+
+INSERT INTO nike (modele, couleur, image, stock) values ("Nike air force 1", "blanche", "nike_air_force_1.jpeg", 10);
+INSERT INTO nike (modele, couleur, image, stock) values ("Nike MK2 Tekno", "bleue", "nike_mk2_tekno.jpeg", 5);
+INSERT INTO nike (modele, couleur, image, stock) values ("Nike Air Max Metallic", "doré, argenté", "nike_air_max_metallic.jpeg", 2);
+
+
+SELECT * FROM nike;
+
+SELECT * FROM nike where modele like "%air%";
+
+select DISTINCT modele from nike;
+
+select count(*) from nike;
diff --git a/requirements-dev.in b/requirements-dev.in
new file mode 100644
index 0000000..f3a3fb4
--- /dev/null
+++ b/requirements-dev.in
@@ -0,0 +1,5 @@
+-c requirements.txt
+ipython
+black
+flake8
+pytest
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 0000000..cc31c02
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,82 @@
+#
+# This file is autogenerated by pip-compile with Python 3.10
+# by the following command:
+#
+#    pip-compile requirements-dev.in
+#
+asttokens==2.2.1
+    # via stack-data
+attrs==22.1.0
+    # via pytest
+backcall==0.2.0
+    # via ipython
+black==22.12.0
+    # via -r requirements-dev.in
+click==8.1.3
+    # via black
+decorator==5.1.1
+    # via ipython
+exceptiongroup==1.0.4
+    # via pytest
+executing==1.2.0
+    # via stack-data
+flake8==6.0.0
+    # via -r requirements-dev.in
+iniconfig==1.1.1
+    # via pytest
+ipython==8.7.0
+    # via -r requirements-dev.in
+jedi==0.18.2
+    # via ipython
+matplotlib-inline==0.1.6
+    # via ipython
+mccabe==0.7.0
+    # via flake8
+mypy-extensions==0.4.3
+    # via black
+packaging==22.0
+    # via
+    #   -c requirements.txt
+    #   pytest
+parso==0.8.3
+    # via jedi
+pathspec==0.10.3
+    # via black
+pexpect==4.8.0
+    # via ipython
+pickleshare==0.7.5
+    # via ipython
+platformdirs==2.6.0
+    # via black
+pluggy==1.0.0
+    # via pytest
+prompt-toolkit==3.0.36
+    # via ipython
+ptyprocess==0.7.0
+    # via pexpect
+pure-eval==0.2.2
+    # via stack-data
+pycodestyle==2.10.0
+    # via flake8
+pyflakes==3.0.1
+    # via flake8
+pygments==2.13.0
+    # via ipython
+pytest==7.2.0
+    # via -r requirements-dev.in
+six==1.16.0
+    # via
+    #   -c requirements.txt
+    #   asttokens
+stack-data==0.6.2
+    # via ipython
+tomli==2.0.1
+    # via
+    #   black
+    #   pytest
+traitlets==5.7.1
+    # via
+    #   ipython
+    #   matplotlib-inline
+wcwidth==0.2.5
+    # via prompt-toolkit
diff --git a/requirements.in b/requirements.in
new file mode 100644
index 0000000..12df090
--- /dev/null
+++ b/requirements.in
@@ -0,0 +1,5 @@
+beautifulsoup4
+requests
+SQLAlchemy
+pandas
+matplotlib
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..bc549ee
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,55 @@
+#
+# This file is autogenerated by pip-compile with Python 3.10
+# by the following command:
+#
+#    pip-compile requirements.in
+#
+beautifulsoup4==4.11.1
+    # via -r requirements.in
+certifi==2022.12.7
+    # via requests
+charset-normalizer==2.1.1
+    # via requests
+contourpy==1.0.6
+    # via matplotlib
+cycler==0.11.0
+    # via matplotlib
+fonttools==4.38.0
+    # via matplotlib
+greenlet==2.0.1
+    # via sqlalchemy
+idna==3.4
+    # via requests
+kiwisolver==1.4.4
+    # via matplotlib
+matplotlib==3.6.2
+    # via -r requirements.in
+numpy==1.23.5
+    # via
+    #   contourpy
+    #   matplotlib
+    #   pandas
+packaging==22.0
+    # via matplotlib
+pandas==1.5.2
+    # via -r requirements.in
+pillow==9.3.0
+    # via matplotlib
+pyparsing==3.0.9
+    # via matplotlib
+python-dateutil==2.8.2
+    # via
+    #   matplotlib
+    #   pandas
+pytz==2022.6
+    # via pandas
+requests==2.28.1
+    # via -r requirements.in
+six==1.16.0
+    # via python-dateutil
+soupsieve==2.3.2.post1
+    # via beautifulsoup4
+sqlalchemy==1.4.45
+    # via -r requirements.in
+urllib3==1.26.13
+    # via requests
-- 
GitLab