confusion: je n'importe pas des modules dans un script et ca marche, pourquoi?
Bonjour
J'ai un script python où je fais une requete SQL ver sune base avec duckdb.
voici mon code main.py :
Code:
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) |
j'ai donc une fonction pour executer ma requete.
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 :
Code:
1 2 3 4
| def query(DB_connection, query):
print('appel')
result=DB_connection.execute(query).df()
return result |
je n'importe pas duckdb ou pandas dans ce script func.py.
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