以动态方式将列名传递到 SQL 语句 - Python- SQL 服务器

Pass Column Names into SQL statement in dynamic way - Python- SQL Server

query = ('SELECT ? from table', fields)

'fields'的例子value = name, surname, date

我可以将 'fields' 放入列表中,但我不知道要在查询中放入多少(?)。因为,fields 变量有时会包含 5 个,有时是 10 个列名。我正在尝试将列名动态传递给查询。

我该如何解决这个问题?

语句可以这样构成。值将类似于“(?, ?, ?, ?)”,具体取决于字段的长度。

# create a comma separated list of question marks
# then surround with parenthesis  
values = '('+', '.join(['?']*len(fields))+')'
        
query=('SELECT '+values+' from table',fields) 

并不是说这会起作用,因为您没有分享您如何连接或查询 SQL 服务器的细节。

相反,您可以使用 join str 方法:

table_name = 'MyTable'

fields = ['col1','col2','col3']

values = ', '.join(fields)
        
statement = 'SELECT '+values+' from '+table_name

query
'SELECT col1, col2, col3 from MyTable'

query=(statement)

连接查询字符串

str1 = "SELECT "
for fieldname in fields:
    str1 = str1 + fieldname + ", "

select_query_string = str1[0:-2] + " from " +table

然后在查询中使用它

query=(select_query_string)