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

Fermé
nbl335 - Modifié le 16 avril 2021 à 10:19
yg_be Messages postés 20740 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2022 - 16 avril 2021 à 13:07
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 20740 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2022 1 268
16 avril 2021 à 10:21
bonjour,
je suggère que tu fasses
print(query2)
, je pense que cela t'aidera à comprendre.
0
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 20740 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2022 1 268 > nbl335
16 avril 2021 à 13:07
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