PostgreSQL与子字符串匹配

时间:2020-04-15 09:16:53

标签: python postgresql psycopg2

使用python pstcopg2

我想制作一个像这样的数据框

df = sql.read_sql("""SELECT objects.sampleid, MAX(objects.projid) AS projid, 
                            MAX(samples.t01) AS hdrfilename, MAX(samples.t06) AS ctdfilename, 
                            MAX(objects.objdate) || ' ' || MAX(objects.objtime) AS objdatetime, 
                            MAX(objects.latitude) AS latitude, MAX(objects.longitude) AS longitude, 
                            MAX(objects.orig_id) AS orig_id 
        FROM samples, objects 
        WHERE objects.projid in (%s) and objects.orig_id LIKE '%samples.orig_id%'
        GROUP BY objects.sampleid"""%(projid_list), mydb)

但是出现错误消息

    GROUP BY objects.sampleid"""%(projid_list), mydb) 
TypeError: not enough arguments for format string 

我猜主要问题出在这行上,

objects.orig_id LIKE '%samples.orig_id%'

如果我将代码应用于

objects.orig_id = samples.orig_id

它可以工作,但这并不是我想要的。 我想要如果objects.orig_id包含samples.orig_id,我会得到数据。

如何更正上面的代码?

1 个答案:

答案 0 :(得分:2)

您可以通过%使%%逃脱。

类似的事情应该起作用:

LIKE '%%samples.orig_id%%'
相关问题