cx_Oracle question

  • Thread starter Richard Schulman
  • Start date
R

Richard Schulman

I'm having trouble getting started using Python's cx_Oracle binding to
Oracle XE. In forthcoming programs, I need to set variables within sql
statements based on values read in from flat files. But I don't seem
to be able to get even the following stripped-down test program to
work:

import cx_Oracle
connection = cx_Oracle.connect("username", "password")
cursor = connection.cursor()

arg_1 = 2 #later, arg_1, arg_2, etc. will be read in files

cursor.execute("""select mean_eng_txt from mean
where mean_id=:arg_1""",arg_1)
for row in cursor.fetchone():
print row
cursor.close()
connection.close()

The program above produces the following error message:

C:\pythonapps>python oracle_test.py
Traceback (most recent call last):
File "oracle_test.py", line 7, in ?
cursor.execute('select mean_eng_txt from mean where
mean_id=:arg_1',arg_1)
TypeError: expecting a dictionary, sequence or keyword args

What do I need to do to get this sort of program working?

TIA,
Richard Schulman
For email reply, remove the xx characters
 
U

Uwe Hoffmann

Richard said:
cursor.execute("""select mean_eng_txt from mean
where mean_id=:arg_1""",arg_1)

cursor.execute("""select mean_eng_txt from mean
where mean_id=:arg_1""",{"arg_1":arg_1})
 
D

Diez B. Roggisch

Richard said:
I'm having trouble getting started using Python's cx_Oracle binding to
Oracle XE. In forthcoming programs, I need to set variables within sql
statements based on values read in from flat files. But I don't seem
to be able to get even the following stripped-down test program to
work:

import cx_Oracle
connection = cx_Oracle.connect("username", "password")
cursor = connection.cursor()

arg_1 = 2 #later, arg_1, arg_2, etc. will be read in files

cursor.execute("""select mean_eng_txt from mean
where mean_id=:arg_1""",arg_1)
for row in cursor.fetchone():
print row
cursor.close()
connection.close()

The program above produces the following error message:

C:\pythonapps>python oracle_test.py
Traceback (most recent call last):
File "oracle_test.py", line 7, in ?
cursor.execute('select mean_eng_txt from mean where
mean_id=:arg_1',arg_1)
TypeError: expecting a dictionary, sequence or keyword args

What do I need to do to get this sort of program working?

Do what it tells you to do: use a dictionary as parameters or
keyword-args. Not sure what they mean by a sequence though.


So it should work like this:


cursor.execute("""select mean_eng_txt from mean
where mean_id=:arg_1""",{arg_1=arg_1})

Diez
 
R

Richard Schulman

Richard Schulman:
Uwe Hoffman:
cursor.execute("""select mean_eng_txt from mean
where mean_id=:arg_1""",{"arg_1":arg_1})

R.S.'s error message:
Excellent! Vielen Dank, Uwe (and Diez).

This also turned out to work:

cursor.execute("""select mean_eng_txt from mean
where mean_id=:arg_1""",arg_1=arg_1)

Richard Schulman
For email reply, remove the xx part
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Staff online

Members online

Forum statistics

Threads
473,767
Messages
2,569,570
Members
45,045
Latest member
DRCM

Latest Threads

Top