在 Python 中动态创建插入到 table
Create dynamically insert into table in Python
我正在尝试从某些 db2 模式中读取所有 tables 以及那些 tables 以获取它们的列,以便我可以创建动态插入语句
我的数据以这种格式存储在列表中:
list =
[
{'tableName1': ['col1','col2','col3',...]},
{'tableName2': ['col1','col2','col3','col4',...]},
...
]
其中 tableName 是我架构中 table 的名称。到目前为止,我从数据库目录中读取了所有 table 及其列并将它们插入到列表中,但我不知道如何继续迭代并创建插入语句。 SQL 语句将是:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
在我的例子中,第 1 列、第 2 列...在列表中,table 名称也在列表中。 Table 名称存储在列表中,但是 table 我们插入的地方会有不同的前缀
您可以将这个问题分成更小的部分,然后尝试形成查询字符串。在这里,我已经为两个表完成了。您可以根据需要迭代其他表。
list1 =[
{'tableName1': ['col1','col2','col3']},
{'tableName2': ['col1','col2','col3','col4']}
]
dict1 = list1[0]
dict2 = list1[1]
table_name_1 = list(dict1.keys())[0]
table_name_2 = list(dict2.keys())[0]
table1_columns = tuple(dict1[table_name_1])
table2_columns = tuple(dict2[table_name_2])
query_string = f"INSERT INTO {table_name_2} ({', '.join(table2_columns)}) " \
f"SELECT {', '.join(table1_columns)} FROM {table_name_1};"
print(query_string)
我正在尝试从某些 db2 模式中读取所有 tables 以及那些 tables 以获取它们的列,以便我可以创建动态插入语句 我的数据以这种格式存储在列表中:
list =
[
{'tableName1': ['col1','col2','col3',...]},
{'tableName2': ['col1','col2','col3','col4',...]},
...
]
其中 tableName 是我架构中 table 的名称。到目前为止,我从数据库目录中读取了所有 table 及其列并将它们插入到列表中,但我不知道如何继续迭代并创建插入语句。 SQL 语句将是:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
在我的例子中,第 1 列、第 2 列...在列表中,table 名称也在列表中。 Table 名称存储在列表中,但是 table 我们插入的地方会有不同的前缀
您可以将这个问题分成更小的部分,然后尝试形成查询字符串。在这里,我已经为两个表完成了。您可以根据需要迭代其他表。
list1 =[
{'tableName1': ['col1','col2','col3']},
{'tableName2': ['col1','col2','col3','col4']}
]
dict1 = list1[0]
dict2 = list1[1]
table_name_1 = list(dict1.keys())[0]
table_name_2 = list(dict2.keys())[0]
table1_columns = tuple(dict1[table_name_1])
table2_columns = tuple(dict2[table_name_2])
query_string = f"INSERT INTO {table_name_2} ({', '.join(table2_columns)}) " \
f"SELECT {', '.join(table1_columns)} FROM {table_name_1};"
print(query_string)