【问题标题】:Python mySQLdb posting data to a dynamic tablePython mySQLdb 将数据发布到动态表
【发布时间】:2015-07-24 19:36:50
【问题描述】:

我正在尝试将数据发布到表的名称是变量的表中,我没有收到任何错误,但是没有数据正在发布。

cursor = db.cursor()
cursor.execute('DROP TABLE IF EXISTS %s' %data[1])

0L

sql ="""CREATE TABLE %s  (IP TEXT, AVAILIBILITY INT)""" %data[1]
cursor.execute(sql)
0L

for key in data[0]:
    print type(key), type(data[0][key])
    sql = """INSERT INTO %s VALUES (%s,%s)""" %(data[1],key,data[0][key])

【问题讨论】:

  • 相关且可能重复:Python MySQLdb execute table variable.
  • db.commit()吗?
  • 你是对的,我没有使用 db.commit() 这使得运行时需要更长的时间,我认为它可以工作,但它仍然没有发布

标签: python mysql-python


【解决方案1】:

您的代码从不执行INSERT 语句;它只定义了一个字符串sql。您需要在循环内添加一个cursor.execute 调用。

您还应该尽可能地参数化您的查询,即使您无法参数化某些部分(如表或列名)。我建议在此处使用 advanced string formatting 以避免转义参数化占位符。

如果你一开始就这样写,你可能会更容易注意到缺少的行:

for key in data[0]:
    sql = 'INSERT INTO {} VALUES (%s,%s)'.format(data[1])  # can't supply object names
    cursor.execute(sql, (key, data[0][key]))               # as parameters, but values ok

【讨论】:

    猜你喜欢
    • 2020-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2014-01-04
    • 1970-01-01
    • 2018-05-14
    相关资源
    最近更新 更多