Andrey Paramonov
Andrey Paramonov

Reputation: 409

Cassandra ODBC parameter binding

I've installed DataStax Community Edition, and added DataStax ODBC connector. Now I try to access the database via pyodbc:

import pyodbc
connection = pyodbc.connect('Driver=DataStax Cassandra ODBC Driver;Host=127.0.0.1',
                            autocommit = True)
cursor = connection.cursor()
cursor.execute('CREATE TABLE Test (id INT PRIMARY KEY)')
cursor.execute('INSERT INTO Test (id) VALUES (1)')
for row in cursor.execute('SELECT * FROM Test'):
    print row

It works fine and returns

>>> (1, )

However when I try

cursor.execute('INSERT INTO Test (id) VALUES (:id)', {'id': 2})

I get

>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "test.py", line 11, in <module>
    cursor.execute('INSERT INTO Test (id) VALUES (:id)', {'id': 2})
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')

Alternatives do neither work:

cursor.execute('INSERT INTO Test (id) VALUES (:1)', (2))

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "test.py", line 11, in <module>
    cursor.execute('INSERT INTO Test (id) VALUES (?)', (2))
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')

and

cursor.execute('INSERT INTO Test (id) VALUES (?)', (2))

>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pyodbc.Error: ('HY000', "[HY000] [DataStax][CassandraODBC] (15) Error while preparing a query in Cassandra: [33562624] : line 1:31 no viable alternative at input '1' (...Test (id) VALUES (:[1]...) (15) (SQLPrepare)")

My Cassandra version is 2.2.3, ODBC driver is from https://downloads.datastax.com/odbc-cql/1.0.1.1002/

Upvotes: 0

Views: 594

Answers (1)

undefined_variable
undefined_variable

Reputation: 6218

According to pyodbc Documentation your query should be

cursor.execute('INSERT INTO Test (id) VALUES (?)', 2)

More details on pyodbc Insert

As per the comment got a thread which says it is a open bug in pyodbc BUG

Upvotes: 0

Related Questions