将表名作为参数传递给pyodbc

8 投票
2 回答
5998 浏览
提问于 2025-04-16 21:22

我正在尝试在 pyodbc 中传递一个表名,目的是从 ms sql 2005 中获取数据。我试过用 ? 来代替表名,但总是没成功。如果有人能给我一些建议,告诉我该怎么做,我会非常感激。

2 个回答

2

在SQL Server中,你不能直接用变量来当表名。要实现这个功能,你需要使用动态SQL

想了解如何处理动态表名,可以看看这里:http://www.sommarskog.se/dynamic_sql.html#objectnames

5

因为你在使用pyodbc,我猜测你并不是在调用存储过程(SPROC)。我建议你在Python中构建你的SQL字符串,然后把它传给SQL去执行。

import pyodbc
dbconn = pyodbc.connect(ConnectionString)
c = dbconn.cursor()

j = 'table1' #where table1 is entered, retreived, etc
query = "Select * from %s" % j
c.execute(query)
result = c.fetchall()
print 'Done'

撰写回答