以动态方式将列名传递到 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)
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)