Как передать строку без кавычек в параметре cassandra метода .execute - PullRequest
0 голосов
/ 03 мая 2018

Мой запрос:

SELECT * 
FROM employee.emp_details 
WHERE id = 7

Это мой код

from cassandra.cluster import Cluster

HOST = ['10.107.2.123']
PORT = '9042'
cluster = Cluster(HOST, PORT)
session = cluster.connect()

val = 'FROM'
rows = session.execute('''SELECT * %s employee.emp_details WHERE id = %s''', (val, 7))

Это ошибка, которую я получаю:

Traceback (последний вызов был последним):
Файл "/home/sachhya/Documents/Example/ex.py", строка 9, в
row = session.execute ('' 'SELECT *% s employee.emp_details WHERE id =% s' '', (val, 7))
Файл "/usr/local/lib/python3.6/dist-packages/cassandra/cluster.py", строка 2134, в исполнении
вернуть self.execute_async (запрос, параметры, трассировка, custom_payload, тайм-аут, execute_profile, paging_state) .result ()
Файл "/usr/local/lib/python3.6/dist-packages/cassandra/cluster.py", строка 4026, в результате
поднять self._final_exception
cassandra.protocol.SyntaxException:

Я считаю, что моя строка запроса была сделана так после привязки параметра SELECT * 'FROM' employee.emp_details WHERE id = 7

Пожалуйста, помогите, мне нужно использовать переменную 'val' для привязки в моей строке запроса.

Ответы [ 3 ]

0 голосов
/ 03 мая 2018
from cassandra.cluster import Cluster

HOST = ['10.107.2.123']
PORT = '9042'
cluster = Cluster(HOST, PORT)
session = cluster.connect()

val = 'FROM'
query = 'SELECT * {} employee.emp_details WHERE id = {}'.format(val, 7)

# or query = ('SELECT * %s employee.emp_details WHERE id = %s' % (a, 7))

rows = session.execute(query)

вывод с терминала:

>>> query = ('SELECT * %s employee.emp_details WHERE id = %s' % (a, 7))
>>> query
'SELECT * FROM employee.emp_details WHERE id = 7'

>>> query = 'SELECT * {} employee.emp_details WHERE id = {}'.format(a, 7)
>>> query
'SELECT * FROM employee.emp_details WHERE id = 7'
0 голосов
/ 23 мая 2018

Позвольте мне показать вам силу подготовленных высказываний.

from cassandra.cluster import Cluster

HOST = ['10.107.2.123'] PORT = '9042' cluster = Cluster(HOST, PORT) session = cluster.connect()

val=7

query="SELECT * employee.emp_details WHERE id = ?" prepared_query=session.prepare(prepared_query)

results=session.execute(prepared_query,(val))

print results

Используйте подготовленные операторы, чтобы выполнять итерацию переменных в запросе.

Визит: Подготовленные отчеты Документы

0 голосов
/ 03 мая 2018

Технически, вам не нужно связывать FROM в вашем запросе. Используйте форматирование строки в этом случае:

rows = session.execute('''SELECT * {} employee.emp_details WHERE id = %s'''.format(val), (7,))
...