【问题标题】:Import data from python (probleme with where condition)从python导入数据(where条件问题)
【发布时间】:2021-04-16 10:00:24
【问题描述】:

我在 Python 中工作 我有允许我导入工作正常的数据集的代码。然而,在我的数据集中,我有 3 个不同的患者,我只想导入我感兴趣的患者(可以通过在 SQL 查询中添加 WHERE 语句来实现。 所以下面的代码有效:

def importecdata():
query2 = "SELECT TECDATA.[Vol_Recalage_US_VD], TECDATA.[Vol_Recalage_Us_VG], TECDATA.[SUBJID] 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)

它返回病人 14 的数据 但是现在我想把病人的名字作为变量放在我的函数中,所以我做了以下代码:

def importecdata(patient):
query2 = "SELECT TECDATA.[Vol_Recalage_US_VD], TECDATA.[Vol_Recalage_Us_VG], TECDATA.[SUBJID] 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)

我检查了一下,患者变量得到了值 patient14。但它不起作用......我尝试将变量患者的值修改为“患者14”它也不起作用我有同样的错误: 无效的列名 \xa0: '患者'。所以代码有效,问题出在患者变量的“where”条件

(对不起我的英语我是法国人)

【问题讨论】:

  • 你的第二个例子没有引号,而第一个例子有,对吗?
  • 是的,因为第二个是一个包含名称患者的变量,在第一个示例中,我直接将名称患者放在 where 条件中

标签: python sql database import where-clause


【解决方案1】:

您必须在查询字符串检查下面的代码中添加您的患者值:

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

【讨论】:

  • 嗨,谢谢您的回答,但它不起作用,因为我的数据中的患者姓名正是:PA-014-FR-PON(而不是患者14,我只是为了示例)当我尝试您的代码时出现此错误:未知列名'PA'未知列名'FR'未知列名'PON'
  • @NabilKl 抱歉,我忘了在患者周围添加单个 qoutes。请检查更新后的答案 {0} 现在是 '{0}'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
相关资源
最近更新 更多