【问题标题】:Pass a python variable into an SQL query将 python 变量传递给 SQL 查询
【发布时间】:2020-05-29 11:39:52
【问题描述】:

我正在研究 Databricks,我正在尝试将 python 变量传递给 SQL 查询:

series_name "LogTest"

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

我尝试使用$,但它不起作用。

我该怎么做?

问候

【问题讨论】:

标签: python sql databricks azure-databricks


【解决方案1】:

在这种情况下,您的变量和查询只是字符串。你可以这样做:

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

... 在 python 3 中。请记住,您的查询字符串需要在插入的变量周围加上单引号。但是,对于某些变量,您可能需要将变量直接传递给 spark 模块,以便它可以解释它。我经常使用 pyodbc 并且会这样做:

query = f"""SELECT * FROM results_table
WHERE name = ?"""
cursor.execute(query, series_name)

【讨论】:

  • 谢谢!我尝试使用 f-string,但没有加上单引号 (')。通常没有它也可以工作
【解决方案2】:

以下也可以,

series_name = "LogTest"
spark.sql("SELECT * FROM results_table WHERE name = " + series_name).toPandas()

【讨论】:

    【解决方案3】:

    我们也可以尝试以下方法。

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

    【讨论】:

      猜你喜欢
      • 2019-11-03
      • 2017-09-10
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 2020-04-03
      相关资源
      最近更新 更多