如何在 django 的插入查询中动态使用列名

Posted

技术标签:

【中文标题】如何在 django 的插入查询中动态使用列名【英文标题】:How to use column name dynamically inside insert query in djnago 【发布时间】:2020-08-04 03:33:55 【问题描述】:
cursor.execute("insert into demoapp_site ('name','firstname','lastname') values (%s,%s,%s)",site_data)

在上面的查询中,我想动态传递列名,而内部值的 %s 也没有预先定义它需要写入多少次

那么,如何根据我的数据编写我的 sql 查询,这些数据来自二维数组中的 html 表??

【问题讨论】:

【参考方案1】:

我们需要在使用之前构建查询。如下

field_string = ""
value_string = ""

# This will string in this format "'field1','field2'"
# Assuming array is in format [["field1", "value1"],..]
# Update the for loop statement based on your input, other lines remain same 
for field, value in my_field_array:
    temp_field_string = "'%s'" % field
    field_string = field_string + temp_field_string + ","
    temp_value_string = "'%s'" % value
    value_string = value_string + temp_value_string + ","

# Removing trailing comma's before passing the values
cmd = "insert into demoapp_site (%s) values (%s)" % (field_string[:-1], value_string[:-1])
cursor.execute(cmd)

【讨论】:

以上是关于如何在 django 的插入查询中动态使用列名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pyspark 的动态列列表中转义列名

如何在函数的 UPDATE 或 SELECT 语句中使用动态列名?

如何在动态查询中将行值连接到列名

如何动态准备 SQL 查询(也包括列名)避免 SQL 注入

如何MyBatis中使用动态SQL查询与注释

如何从 SQL 表中动态获取单元格值?