user1501398
user1501398

Reputation: 11

Python pass arguments in to query error

I have the following code in python. I get this error ->tuple indices must be integers, not str

How can I pass these values into the query? I have other examples where this approach works perfectly, i don't understand why it's failling here.

def request_events_json(uei,interval,conn):

    cur = conn.cursor()

    events_query ="""select e.nodeid,n.nodelabel,e.ipaddr,count(*) as total,min(e.eventcreatetime),max(e.eventcreatetime),(regexp_matches (e.eventlogmsg,E': %(.*)'))[1] as msglog
                     from events e, node n where e.eventuei = (%s)  and e.eventcreatetime > now() - interval (%s) and n.nodeid=e.nodeid
                     group by n.nodelabel,e.nodeid,e.ipaddr,msglog
                     order by e.nodeid, count(*) desc limit 10;"""



    try:
       print('## Requesting events ##')
       cur.execute(events_query,('uei.opennms.org/syslogd/cisco/line','5 min'))
       .......

Upvotes: 1

Views: 172

Answers (1)

Marco de Wit
Marco de Wit

Reputation: 2804

With my version of PostgreSQL the round brackets after interval are forbidden.

Update:

It is the percent-sign in the regexp. Double it.

Upvotes: 1

Related Questions