Skip to content

Commit c1ea8e0

Browse files
committed
Primeri z SQLAlchemy s predavanj
1 parent 2b5bc2b commit c1ea8e0

File tree

3 files changed

+1002
-109
lines changed

3 files changed

+1002
-109
lines changed

predavanja/primeri/orm/Banka.ipynb

Lines changed: 153 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
{
2020
"cell_type": "code",
21-
"execution_count": null,
21+
"execution_count": 1,
2222
"metadata": {},
2323
"outputs": [],
2424
"source": [
@@ -36,7 +36,7 @@
3636
},
3737
{
3838
"cell_type": "code",
39-
"execution_count": null,
39+
"execution_count": 2,
4040
"metadata": {},
4141
"outputs": [],
4242
"source": [
@@ -72,7 +72,7 @@
7272
},
7373
{
7474
"cell_type": "code",
75-
"execution_count": null,
75+
"execution_count": 3,
7676
"metadata": {},
7777
"outputs": [],
7878
"source": [
@@ -88,7 +88,7 @@
8888
},
8989
{
9090
"cell_type": "code",
91-
"execution_count": null,
91+
"execution_count": 4,
9292
"metadata": {},
9393
"outputs": [],
9494
"source": [
@@ -104,9 +104,46 @@
104104
},
105105
{
106106
"cell_type": "code",
107-
"execution_count": null,
107+
"execution_count": 5,
108108
"metadata": {},
109-
"outputs": [],
109+
"outputs": [
110+
{
111+
"name": "stdout",
112+
"output_type": "stream",
113+
"text": [
114+
"2025-06-05 10:24:27,533 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
115+
"2025-06-05 10:24:27,534 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"kraj\")\n",
116+
"2025-06-05 10:24:27,535 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
117+
"2025-06-05 10:24:27,536 INFO sqlalchemy.engine.Engine PRAGMA temp.table_info(\"kraj\")\n",
118+
"2025-06-05 10:24:27,537 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
119+
"2025-06-05 10:24:27,537 INFO sqlalchemy.engine.Engine PRAGMA main.table_info(\"oseba\")\n",
120+
"2025-06-05 10:24:27,538 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
121+
"2025-06-05 10:24:27,538 INFO sqlalchemy.engine.Engine PRAGMA temp.table_info(\"oseba\")\n",
122+
"2025-06-05 10:24:27,539 INFO sqlalchemy.engine.Engine [raw sql] ()\n",
123+
"2025-06-05 10:24:27,540 INFO sqlalchemy.engine.Engine \n",
124+
"CREATE TABLE kraj (\n",
125+
"\tposta INTEGER NOT NULL, \n",
126+
"\tkraj VARCHAR(250), \n",
127+
"\tPRIMARY KEY (posta)\n",
128+
")\n",
129+
"\n",
130+
"\n",
131+
"2025-06-05 10:24:27,540 INFO sqlalchemy.engine.Engine [no key 0.00036s] ()\n",
132+
"2025-06-05 10:24:27,553 INFO sqlalchemy.engine.Engine \n",
133+
"CREATE TABLE oseba (\n",
134+
"\tid INTEGER NOT NULL, \n",
135+
"\time VARCHAR(250) NOT NULL, \n",
136+
"\tkraj_id INTEGER, \n",
137+
"\tPRIMARY KEY (id), \n",
138+
"\tFOREIGN KEY(kraj_id) REFERENCES kraj (posta)\n",
139+
")\n",
140+
"\n",
141+
"\n",
142+
"2025-06-05 10:24:27,554 INFO sqlalchemy.engine.Engine [no key 0.00053s] ()\n",
143+
"2025-06-05 10:24:27,561 INFO sqlalchemy.engine.Engine COMMIT\n"
144+
]
145+
}
146+
],
110147
"source": [
111148
"Base.metadata.create_all(engine)"
112149
]
@@ -120,7 +157,7 @@
120157
},
121158
{
122159
"cell_type": "code",
123-
"execution_count": null,
160+
"execution_count": 6,
124161
"metadata": {},
125162
"outputs": [],
126163
"source": [
@@ -137,7 +174,7 @@
137174
},
138175
{
139176
"cell_type": "code",
140-
"execution_count": null,
177+
"execution_count": 7,
141178
"metadata": {},
142179
"outputs": [],
143180
"source": [
@@ -154,9 +191,20 @@
154191
},
155192
{
156193
"cell_type": "code",
157-
"execution_count": null,
194+
"execution_count": 8,
158195
"metadata": {},
159-
"outputs": [],
196+
"outputs": [
197+
{
198+
"name": "stdout",
199+
"output_type": "stream",
200+
"text": [
201+
"2025-06-05 10:26:17,095 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
202+
"2025-06-05 10:26:17,096 INFO sqlalchemy.engine.Engine INSERT INTO kraj (posta, kraj) VALUES (?, ?)\n",
203+
"2025-06-05 10:26:17,097 INFO sqlalchemy.engine.Engine [generated in 0.00077s] (1000, 'Ljubljana')\n",
204+
"2025-06-05 10:26:17,098 INFO sqlalchemy.engine.Engine COMMIT\n"
205+
]
206+
}
207+
],
160208
"source": [
161209
"session.commit()"
162210
]
@@ -170,9 +218,24 @@
170218
},
171219
{
172220
"cell_type": "code",
173-
"execution_count": null,
221+
"execution_count": 9,
174222
"metadata": {},
175-
"outputs": [],
223+
"outputs": [
224+
{
225+
"name": "stdout",
226+
"output_type": "stream",
227+
"text": [
228+
"2025-06-05 10:27:44,851 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
229+
"2025-06-05 10:27:44,854 INFO sqlalchemy.engine.Engine SELECT kraj.posta AS kraj_posta, kraj.kraj AS kraj_kraj \n",
230+
"FROM kraj \n",
231+
"WHERE kraj.posta = ?\n",
232+
"2025-06-05 10:27:44,855 INFO sqlalchemy.engine.Engine [generated in 0.00063s] (1000,)\n",
233+
"2025-06-05 10:27:44,857 INFO sqlalchemy.engine.Engine INSERT INTO oseba (ime, kraj_id) VALUES (?, ?)\n",
234+
"2025-06-05 10:27:44,857 INFO sqlalchemy.engine.Engine [generated in 0.00047s] ('Janez', 1000)\n",
235+
"2025-06-05 10:27:44,858 INFO sqlalchemy.engine.Engine COMMIT\n"
236+
]
237+
}
238+
],
176239
"source": [
177240
"nova_oseba = Oseba(ime='Janez', kraj=nov_kraj)\n",
178241
"session.add(nova_oseba)\n",
@@ -188,9 +251,30 @@
188251
},
189252
{
190253
"cell_type": "code",
191-
"execution_count": null,
254+
"execution_count": 10,
192255
"metadata": {},
193-
"outputs": [],
256+
"outputs": [
257+
{
258+
"name": "stdout",
259+
"output_type": "stream",
260+
"text": [
261+
"2025-06-05 10:29:22,518 INFO sqlalchemy.engine.Engine BEGIN (implicit)\n",
262+
"2025-06-05 10:29:22,520 INFO sqlalchemy.engine.Engine SELECT oseba.id AS oseba_id, oseba.ime AS oseba_ime, oseba.kraj_id AS oseba_kraj_id \n",
263+
"FROM oseba\n",
264+
"2025-06-05 10:29:22,521 INFO sqlalchemy.engine.Engine [generated in 0.00096s] ()\n"
265+
]
266+
},
267+
{
268+
"data": {
269+
"text/plain": [
270+
"[<__main__.Oseba at 0x78c870397980>]"
271+
]
272+
},
273+
"execution_count": 10,
274+
"metadata": {},
275+
"output_type": "execute_result"
276+
}
277+
],
194278
"source": [
195279
"session.query(Oseba).all()"
196280
]
@@ -204,9 +288,22 @@
204288
},
205289
{
206290
"cell_type": "code",
207-
"execution_count": null,
291+
"execution_count": 11,
208292
"metadata": {},
209-
"outputs": [],
293+
"outputs": [
294+
{
295+
"name": "stdout",
296+
"output_type": "stream",
297+
"text": [
298+
"2025-06-05 10:29:41,154 INFO sqlalchemy.engine.Engine SELECT kraj.posta AS kraj_posta, kraj.kraj AS kraj_kraj \n",
299+
"FROM kraj\n",
300+
" LIMIT ? OFFSET ?\n",
301+
"2025-06-05 10:29:41,155 INFO sqlalchemy.engine.Engine [generated in 0.00130s] (1, 0)\n",
302+
"<__main__.Kraj object at 0x78c872aa1100>\n",
303+
"KRAJ: Ljubljana\n"
304+
]
305+
}
306+
],
210307
"source": [
211308
"kraj1 = session.query(Kraj).first()\n",
212309
"print(kraj1)\n",
@@ -222,9 +319,30 @@
222319
},
223320
{
224321
"cell_type": "code",
225-
"execution_count": null,
322+
"execution_count": 12,
226323
"metadata": {},
227-
"outputs": [],
324+
"outputs": [
325+
{
326+
"name": "stdout",
327+
"output_type": "stream",
328+
"text": [
329+
"2025-06-05 10:30:53,518 INFO sqlalchemy.engine.Engine SELECT oseba.id AS oseba_id, oseba.ime AS oseba_ime, oseba.kraj_id AS oseba_kraj_id \n",
330+
"FROM oseba \n",
331+
"WHERE ? = oseba.kraj_id\n",
332+
"2025-06-05 10:30:53,519 INFO sqlalchemy.engine.Engine [generated in 0.00107s] (1000,)\n"
333+
]
334+
},
335+
{
336+
"data": {
337+
"text/plain": [
338+
"[<__main__.Oseba at 0x78c870397980>]"
339+
]
340+
},
341+
"execution_count": 12,
342+
"metadata": {},
343+
"output_type": "execute_result"
344+
}
345+
],
228346
"source": [
229347
"session.query(Oseba).filter(Oseba.kraj == kraj1).all()"
230348
]
@@ -238,9 +356,23 @@
238356
},
239357
{
240358
"cell_type": "code",
241-
"execution_count": null,
359+
"execution_count": 13,
242360
"metadata": {},
243-
"outputs": [],
361+
"outputs": [
362+
{
363+
"name": "stdout",
364+
"output_type": "stream",
365+
"text": [
366+
"2025-06-05 10:31:23,067 INFO sqlalchemy.engine.Engine SELECT oseba.id AS oseba_id, oseba.ime AS oseba_ime, oseba.kraj_id AS oseba_kraj_id \n",
367+
"FROM oseba \n",
368+
"WHERE ? = oseba.kraj_id\n",
369+
"2025-06-05 10:31:23,068 INFO sqlalchemy.engine.Engine [cached since 29.55s ago] (1000,)\n",
370+
"<__main__.Oseba object at 0x78c870397980>\n",
371+
"IME: Janez\n",
372+
"KRAJ: <__main__.Kraj object at 0x78c872aa1100>\n"
373+
]
374+
}
375+
],
244376
"source": [
245377
"oseba1 = session.query(Oseba).filter(Oseba.kraj == kraj1).one()\n",
246378
"print(oseba1)\n",
@@ -251,7 +383,7 @@
251383
],
252384
"metadata": {
253385
"kernelspec": {
254-
"display_name": "Python 3",
386+
"display_name": "Python 3 (ipykernel)",
255387
"language": "python",
256388
"name": "python3"
257389
},

0 commit comments

Comments
 (0)