Importer données d'une base de données

nbl335 -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un code qui me permet d'importer un jeu de données qui fonctionne bien. Cependant dans mon jeu de données j'ai 3 patients différents et j'aimerais importer que le patient qui m'intéresse (possible en rajoutant l'instruction WHERE dans la requête SQL.
Du coup le code suivant fonctionne :


def importecdata():
query2 = "SELECT TECDATA.[Vol_Recalage_US_VD], TECDATA.[Vol_Recalage_Us_VG], TECDATA.[SUBJID], TECDATA.[DateTime], MEDDATA.[Cardiac Frequency] FROM TECDATA INNER JOIN MEDDATA ON TECDATA.DateTime = MEDDATA.DateTime WHERE TECDATA.[SUBJID]='patient14';"
dftec1 = pd.read_sql(query2, sql_conn, chunksize=100000)
dftec = pd.concat(dftec1)
return(dftec)


Il me retourne bien les données du patient 14
Et du coup je voulais mettre le nom du patient en variable dans ma fonction donc j'ai fait le code suivant :


def importecdata(patient):
query2 = "SELECT TECDATA.[Vol_Recalage_US_VD], TECDATA.[Vol_Recalage_Us_VG], TECDATA.[SUBJID], TECDATA.[DateTime], MEDDATA.[Cardiac Frequency] FROM TECDATA INNER JOIN MEDDATA ON TECDATA.DateTime = MEDDATA.DateTime WHERE TECDATA.[SUBJID]=patient;"
dftec1 = pd.read_sql(query2, sql_conn, chunksize=100000)
dftec = pd.concat(dftec1)
return(dftec)


Sachant que la variable patient récupère bien la valeur patient14 j'ai vérifié et ça ne fonctionne pas je comprends pas... j'ai essayé de modifier la valeur en 'patient14' avec les guillemets et j'ai toujours la même erreur :
Nom de colonne non valide\xa0: 'patient'
Configuration: Windows / Firefox 87.0

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
je suggère que tu fasses
print(query2)
, je pense que cela t'aidera à comprendre.
0
nbl335
 
Bonjour, je viens d'essayer et justement l'erreur est au niveau du query2 (du WHERE plus exactement) donc impossible de l'afficher malheureusement...
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > nbl335
 
as-tu essayé?
def importecdata(patient):
    query2 = "SELECT TECDATA.[Vol_Recalage_US_VD], TECDATA.[Vol_Recalage_Us_VG], TECDATA.[SUBJID], TECDATA.[DateTime],  MEDDATA.[Cardiac Frequency] FROM TECDATA  INNER JOIN MEDDATA ON TECDATA.DateTime = MEDDATA.DateTime WHERE TECDATA.[SUBJID]=patient;"
    print(query2)
    dftec1 = pd.read_sql(query2, sql_conn, chunksize=100000)
    dftec = pd.concat(dftec1)
    return(dftec)    
0