python - 在MySql中,使用Python,如何根据变量插入表和列?

标签 python mysql

我正在用Python构建一个接口(interface)来访问一些大数据表中的不同查询(例如插入、搜索、预定义查询等)。问题是有几个不同的表,每个表包含多个列...所以我想模块化我的代码和 MySql 查询,以便根据我们想要将数据插入到哪个表以及这些数据的列关心的是,它会知道它必须执行什么 MySql 命令。

我发现我们可以使用变量作为值,例如:

sql = "INSERT INTO table_name (col1, col2) VALUES (%s, %s)"
values = ("val1", "val2")
mycursor.execute(sql, values)

是否可以有与 table_namecolumns 类似的东西?例如:

sql = "INSERT INTO (%s) (%s, %s) VALUES (%s, %s)"
table = "table_name"
columns = ("col1", "col2")
values = ("val1", "val2")
mycursor.execute(sql, table, columns, values)

这样,我就可以在需要时(例如,当用户单击一个按钮,在某些文本字段中输入值等),而不是进行大量此类 sql 查询,每个表和每个可能的列子集都有一个查询。

我不确定我的英语是否完全清楚,如果您需要更多信息,请随时询问!

预先感谢您的宝贵时间,

萨尼米斯

最佳答案

对于少数人在寻找答案时会看到这一点,事实上这非常简单!您可以像我建议的那样精确地完成,例如:

sql = "INSERT INTO %s %s VALUES %s"
table = "table_name"
columns = "(col1, col2)"
values = "(val1, val2)"
mycursor.execute(sql % (table, columns, values))

其中每个元素都是一个字符串

通过这样做,您可以进行一些不错的动态计算,例如:

sql = "INSERT INTO %s %s VALUES %s"
table = "table_name"
values = "(val1, val2)"

// Some code

def compute_columns(list_of_columns_to_insert):
    col = "("
    for c in list_of_columns_to_insert:
        col = col + "'" + c + "', " 

    col = col[:-2] + ")"
    return col

// Some code generating a list of columns that we want to insert to

columns = compute_columns(list_of_columns_to_insert)
mycursor.execute(sql % (columns, values))

就这样吧,希望能帮助到和我一样苦苦挣扎的人!

关于python - 在MySql中,使用Python,如何根据变量插入表和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56363324/

相关文章:

python - 使用 Python 编码东亚语言

php - 索引 mysql 之后脚本不工作

mysql - 获取mysql子节点的所有subids

Plat Framework 1.2.7 升级到 1.5.2 后出现 MySQLIntegrityConstraintViolationException

python - 使用 for 循环在 PIL 上打开多个图像

python - 如何将 mapinfo 文件加载到 geopandas 中

Python 无法处理以 0 开头的数字字符串。为什么?

python - 为什么字典会在我不告诉它的情况下自动打印?

mysql - MySQL 中变量定义的 FROM 子句中的表

php - 聊天应用服务器负载