列名作为变量,值作为变量

w46czmvw  于 2021-08-04  发布在  Java
关注(0)|答案(1)|浏览(462)

我试图创建一个填充mysql表的函数。函数接收多个变量作为输入:

Symbol
Var_Date
Stat_Name
Stat_Value

stat\u name的值随着代码的运行而改变,例如enterprise\u value、profit\u margin、ebitda-这些是表中的列名。stat\u值是进入行的数据。
此代码需要一个列名作为变量,三个值作为变量。
我发现前一篇文章看起来很有希望,但到目前为止还没能成功。python中的动态mysql insert语句
我已将我的尝试粘贴到下面的代码:

dbname = "mydb"
var_table = "exc"

symbol = 'ABC'
var_date = '20200629'
stat_name = 'Enterprise_Value'
stat_value = '12345'

def funPopulateTables(symbol, var_date, stat_name, stat_value):
    conn = pymysql.connect(host="localhost", user="root", passwd=mypass, db=dbname)

    my_cursor = conn.cursor()

    query_placeholders = ', '.join(['%s'] * len(stat_value))
    query_columns = ', '.join(stat_name)

    add_word = ("INSERT INTO {table} " "(Symbol, Date, (%s)) " "VALUES (%s, %s, %s)") %(query_columns, query_placeholders)
    data_word = (symbol, var_date, stat_value)
    my_cursor.execute(add_word.format(table=var_table), data_word)

    conn.commit()
    conn.close()

funPopulateTables(symbol, var_date, stat_name, stat_value)

任何帮助都将不胜感激。提前谢谢。

7uzetpgm

7uzetpgm1#

在遵循了khelwood的建议之后,此代码现在开始工作:

dbname = "mydb"
var_table = "exc"

var_date = '20200629'
symbol = 'AAB'
dict_stats = {'Enterprise_Value' : '12345', 'EBITDA' : '67890'}

def funPopulateTables(symbol, var_date, key, stat):
    conn = pymysql.connect(host="localhost", user="root", passwd=mypass, db=dbname)

    my_cursor = conn.cursor()

    add_word_temp = str("INSERT INTO {table} " "(Symbol, Date, ") + key + str(") " " VALUES (%s, %s, %s)")
    print(add_word_temp)
    add_word = str(add_word_temp)
    data_word = (symbol, var_date, stat)
    my_cursor.execute(add_word.format(table=var_table), data_word)

    conn.commit()
    conn.close()

for key in dict_stats:
    print(key)
    stat = dict_stats[key]
    print(stat)
    funPopulateTables(symbol, var_date, key, stat)

相关问题