传递python列表oracle where子句cx\U oracle
试图将Python列表传递给Oracle WHERE子句,我感到很沮丧。我正在使用cx_Oracle,以下是我的代码:传递python列表oracle where子句cx\U oracle,python,oracle,list,module,Python,Oracle,List,Module,试图将Python列表传递给Oracle WHERE子句,我感到很沮丧。我正在使用cx_Oracle,以下是我的代码: # -*- coding: utf-8 -*- from __future__ import unicode_literals import cx_Oracle con = cx_Oracle.connect(str('user/passwordr@server/orcl')) cursor = con.cursor() ids = [19 , 87 , 84] cursor
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import cx_Oracle
con = cx_Oracle.connect(str('user/passwordr@server/orcl'))
cursor = con.cursor()
ids = [19 , 87 , 84]
cursor.execute(str("select employee_id , first_name , last_name from employees where employee_id in ('"+ids+"')" ))
people = cursor.fetchall()
print people
'''The following code works for me , but the problem is the string formater placeholer is not gonna be static is dynamic.'''
params = (198 , 199)
cursor.execute(str("select employee_id , first_name , last_name from employees where employee_id in ('%s' , '%s')" %(params)))
'''Also it would be valid if i can create dynamically the string formater placeholder depending on "length of something".
Sorry if this question was answered i spend hours searching the solution , but i do not found it.'''
经过几个小时的努力,我终于找到了解决办法。代码如下:
# -*- coding: utf-8 -*-
#from __future__ import unicode_literals
import cx_Oracle
con = cx_Oracle.connect(str('user/pass@server/orcl'))
cursor = con.cursor()
cursor.execute(str('select employee_id from employees where rownum < 3 '))
desc = [d[0] for d in cursor.description]
resutl = [dict(zip(desc,line)) for line in cursor]
ids = []
for i in range(len(resutl)):
ids.append(resutl[i]['EMPLOYEE_ID'])
placeholders = ','.join(":x%d" % i for i,_ in enumerate(ids))
sql = """SELECT job_id
FROM job_history
WHERE employee_id IN (%s)""" % placeholders
cursor.execute(sql,ids )
rs = cursor.fetchall()
print rs