我需要使用参数化值创建一个函数来循环具有相同结构的不同查询,我编写了以下代码:
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 查询。
我应该使用哪种方法?
我认为这应该有效
query_sql = ''' SELECT COL FROM {} WHERE COL = '{}' '''.format(table_name, col_value)