Я установил DataStax Community Edition и добавил соединитель ODBC DataStax. Теперь я пытаюсь получить доступ к базе данных с помощью pyodbc:Cassandra ODBC привязка параметра
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
Он отлично работает и возвращает
>>> (1,)
Однако, когда я пытаюсь
cursor.execute('INSERT INTO Test (id) VALUES (:id)', {'id': 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 (:id)', {'id': 2})
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')
Альтернативы не работают:
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')
и
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)")
Моя Cassandra версия 2.2.3, драйвер ODBC от https://downloads.datastax.com/odbc-cql/1.0.1.1002/
каких-либо причины для использования ODBC и pyodbc вместо родного драйвера? –
На самом деле я хочу получить доступ к Cassandra из Delphi, и ODBC - это почти единственный вариант для меня. Я использовал скрипт Python, чтобы все люди могли понять код. –