一尘不染

Python Sql 查询参数化

sql

我需要使用参数化值创建一个函数来循环具有相同结构的不同查询,我编写了以下代码:

import pandas as pd
cnxn_str = ("Driver={SQL Server Native Client 10.0};"
            "Server=xx.xxx.xxx.xx,xx;"
            "Database=dbase;"
            "UID=sa;"
            "PWD=pswd;")
cnxn = pyodbc.connect(cnxn_str)

cursor = cnxn.cursor()

def TRX(tbl_name, var_value):
  import pandas as pd
  #route by hour----
  query = print("SELECT TOP 100 * FROM [DB].[dbo]." + tbl_name + " WHERE var1 IN ('" + var_value + "')") 
  df = pd.read_sql_query(query, cnxn)
  return(df)

当我运行它时,例如:

TRX(tbl_name = '[table1]', var_value = 'a')

它返回以下错误:

DatabaseError:sql ‘None’ 执行失败:要执行的第一个参数必须是字符串或 unicode 查询。

我应该使用哪种方法?


阅读 77

收藏
2022-07-21

共1个答案

一尘不染

我认为这应该有效

query_sql = ''' SELECT COL FROM {} WHERE COL = '{}' '''.format(table_name, col_value)
2022-07-21