Bonjour
J'ai un script python où je fais une requete SQL ver sune base avec duckdb.
voici mon code main.py :
j'ai donc une fonction pour executer ma requete.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import duckdb import pandas as pd import utils.func con = duckdb.connect(database="db.duckdb", read_only=False) data = { "id": ["1","2","3","4","5","6",], "group": ["A","A","A","B","B","B",], "names": ["aze","www","ttt","xxxxxx","llllll","ggggggg",], } data_df = pd.DataFrame(data) con.execute("CREATE TABLE IF NOT EXISTS data AS SELECT * FROM data_df") my_query="select * from data" res = utils.func.query(con, my_query) print(res)
cette fonction prend 2 arguments: ma connexion à la db et la requete.
cette fonction est ecrtie dans un autre script qui s'appelle func.py.
voici func.oy :
je n'importe pas duckdb ou pandas dans ce script func.py.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 def query(DB_connection, query): print('appel') result=DB_connection.execute(query).df() return result
pourtant, dans cette fonction je fais appel aux methodes execute() de duckcb ou df() de pandas.
je lance le script main.py et ca marche bien. Je comprends pas, je pensais que ca allait planter car func.py n'est pas supposé connaitre les methiodes execute() et df() non?
pourquoi ca marche?
ca veut dire que je n'ai besoin d'importer les modules que dans le main?
merci
Partager