Python-在动态表中添加mysql条目
我想在动态mysql表中添加一些python字典数据,但我停留在第12行:Python-在动态表中添加mysql条目,python,mysql,Python,Mysql,我想在动态mysql表中添加一些python字典数据,但我停留在第12行: ## INSERT DATA TO TABLE for key,val in j_decoded["one-wire"].items(): try: rom = key.encode('utf-8') temperatuur = val["temperatuur"] createsqltable = """CREATE TABLE IF NOT EXISTS `%s
## INSERT DATA TO TABLE
for key,val in j_decoded["one-wire"].items():
try:
rom = key.encode('utf-8')
temperatuur = val["temperatuur"]
createsqltable = """CREATE TABLE IF NOT EXISTS `%s` (
id INT PRIMARY KEY AUTO_INCREMENT,
created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
timestamp TIMESTAMP,
temp FLOAT)""" % (rom)
cursor.execute(createsqltable)
cursor.execute("""INSERT INTO %s (timestamp, temp) VALUES (%s,%s)""",(rom,timestampdata,temperatuur))
db.commit()
except:
db.rollback()
## CLOSE THE DATABASE
db.close()
这些表将被创建。但数据永远无法证明这一点
在上面的代码之前,我有一些其他的代码可以工作,但是我对表名不满意。我在第10行放了一些`字:
temp FLOAT)""" % (`rom`)
这会将表创建为“tablename”,而不是tablename
我在第12行做了如下更改:(参见第一个“%s”)
这很好地将数据添加到了“tablename”表中
现在我删除了一些`并创建了一个OK的表,但是数据永远不会进入表中。
我读过其他人的一些帖子,但似乎无法修复(我想我已经尝试了所有的“组合”)
祝你圣诞快乐:)
2014-01-04我已将代码更改为:
cursor.execute("""INSERT INTO {0} (timestamp, temp) VALUES (%s,%s)""".format(a), (b,c))
试着改变
cursor.execute("""INSERT INTO `%s` (timestamp, temp) VALUES (%s,%s)""",(rom,timestampdata,temperatuur))
到
这可能只是一个字符串格式错误。如果您正在使用python 3,还有另一种方法可以做到这一点。如果可用,我建议使用python 3方法。有关更多信息,请参阅
另外,在createsqltable变量中,您需要更改
temp FLOAT)""" % (rom)
到
这可能会导致错误。我尝试了不同的可能性,并提出了以下可行的解决方案:
sql = "insert into %s (timestamp, temp) values (%s)" % (a, "%s, %s")
cursor.execute(sql,(timestampdata,temperatuur))
或
我已经尝试过你的更改,但它不起作用。谢谢你给我指出python 3的不同之处。我想使用它,但对于mysql的使用,我已经读过几次,我应该坚持使用python 2.7,对吗?你可以使用python3,只要你使用正确的库。PyMySQL看起来很有希望,从他们的示例来看,它与您正在使用的库。我已经在MySQLdb、oursql和PyMySQL中尝试了python 2.7和3.2。但是我似乎无法将数据放入动态表中。我喜欢python编程,但MySQL数据库不是我喜欢的。也许有某种调试选项,所以我可以看到出了什么问题。您是否尝试过在默认的M中执行这些SQl查询ySQL控制台?我将试用这段代码,看看它是否有任何问题。mysql控制台命令,特别是动态插入命令,不等于mysqldb模块(对于我所测试的模块)。这是有效的:
cursor.execute(““INSERT INTO 28AA507A0500009E(timestamp,temp)值(%s,%s)”,(timestadata,temperatuur))
但这不是:游标。执行(““插入%s(时间戳,温度)值(%s,%s)”,(rom,时间戳数据,温度”)
temp FLOAT)""" % (rom)
temp FLOAT)""" % (rom,)
sql = "insert into %s (timestamp, temp) values (%s)" % (a, "%s, %s")
cursor.execute(sql,(timestampdata,temperatuur))
def datainsertdef(a,b,c):
cursor.execute("""INSERT INTO `{0}` (timestamp, temp) VALUES (%s,%s)""".format(a), (b,c))