Python 查询 SELECT WHERE 不起作用。有两种选择,但我无法得到它

问题描述 投票:0回答:1

我被一个查询困住了,无法继续。 我正在尝试进行查询,但出现一些错误。

当我这样做时:

def achaGrp(grp): {grp = 'SUPORTE', e.g}
    bclogon=con.cursor()
    ...
    sql='SELECT id_group,gp FROM ugroup u WHERE u.gp = %s'
        bclogon.execute(sql,grp)
        registro = bclogon.fetchone()

我明白了

not all arguments converted during string formatting

如果我这样做:

def achaGrp(grp): {grp = 'SUPORTE', e.g}
    bclogon=con.cursor()
    ...
    sql='SELECT id_group,gp FROM ugroup u WHERE u.gp = %s'
    bclogon.execute(sql,[grp])
    registro = bclogon.fetchone()

我明白了

can only concatenate str (not "tuple") to str

我该怎么办?

下面的查询给了我一个正确的答案,因为我在列表 [matricula,datahora] 中使用了两个值:

def achaReg(matricula,datahora):
    ...
    bclogon=con.cursor()
    sql='SELECT id, matricula, datahora '
        'FROM reg2023 u '
        'WHERE u.matricula = %s AND datahora = %s'
    bclogon.execute(sql,[matricula,datahora])
    registros = bclogon.fetchone()

我哪里出错了?

python-3.x psycopg2
1个回答
0
投票

感谢所有帮助我的人,也感谢对我的问题投反对票的人;-)

错误消息不是引用操作

bclogon.execute(sql,[grp])
,而是引用以下命令:
registro = bclogon.fetchone()
,因为
bclogon.execute...
的结果是一个元组,而不是一个str值。所以我必须这样做,以消除错误消息:

sql='SELECT id_group,gp FROM ugroup u WHERE u.gp = %s'
bclogon.execute(sql,[grp])
registro = str(bclogon.fetchone()[0])
© www.soinside.com 2019 - 2024. All rights reserved.