Передать переменную python в запрос SQL - PullRequest
0 голосов
/ 29 мая 2020

Я работаю над Databricks и пытаюсь передать переменную python в запрос SQL:

series_name "LogTest"

query = """SELECT * FROM results_table
  WHERE name = $series_name
  """
spark.sql(query).toPandas()

Я пробовал с $, но это не работает.

Как мне это сделать?

С уважением

Ответы [ 3 ]

1 голос
/ 04 июня 2020

Следующее также будет работать,

series_name = "LogTest"
spark.sql("SELECT * FROM results_table WHERE name = " + series_name).toPandas()
1 голос
/ 29 мая 2020

В этом случае ваша переменная и запросы представляют собой просто строки. Вы можете:

query = f"""SELECT * FROM results_table
WHERE name = '{series_name}'
"""

... в python 3. Помните, что ваша строка запроса требует одинарных кавычек вокруг вставленной переменной. Однако для некоторых переменных вам может потребоваться передать переменную непосредственно в модуль Spark, чтобы он мог ее интерпретировать. Я часто использую pyodb c и делаю так:

query = f"""SELECT * FROM results_table
WHERE name = ?"""
cursor.execute(query, series_name)
0 голосов
/ 29 мая 2020

мы также можем попробовать следующее.

series_name = "LogTest"
query = "SELECT * FROM results_table WHERE name = {}".format(series_name)
spark.sql(query).toPandas() #
...