使用python脚本填充数据库
我想用后续脚本来填充我的数据库,它根本不运行查询,而是直接去除except和打印错误消息。任何人都可以有()称为insertGuest功能识别问题:使用python脚本填充数据库
for i in range (100):
addGuest = "INSERT INTO hotel_guests VALUES (\"%d\", \"%s\"%s \"%s\")", (int(i), "Name"+str(i),"gender"+str(i))
try:
mycursor.execute(addGuest)
conn.commit()
print ("10000 Guests Successfully Inserted")
except:
conn.rollback()
print ("An error occurred")
我也想数据,尤其是名字是有意义的,但如果我可以得到随机字符串,然后将只需要做。
感谢SQL 夏季
字符值单引号,数字都没有引用。正如您尝试的Python字符串格式化,需要字符串和参数元组之间的“%
”。所以,你会有这样的事情,而不是:
addGuest = "INSERT INTO hotel_guests VALUES (%d, '%s', '%s')" % (int(i), "Name"+str(i),"gender"+str(i))
这就是说,你可能是str.format()
和命名参数更好,为了清楚。请参阅https://docs.python.org/2/library/string.html#format-string-syntax
您可能还想要改进来自您的except
的错误报告。你可以将其替换为:
except mdb.Error as e:
conn.rollback()
print "Error %d: %s" % (e.args[0],e.args[1])
(这是假设你导入MySQLdb的与import MySQLdb as mdb
,否则相应的调整mdb
名称。)
谢谢。我试过这个,但它仍然不采取查询,而是运行错误语句。 – summerdaiz
啊,我明白了。它至少应该生成有效的SQL,因此可能会有其他因素,例如游标/连接的状态或有关表的信息。至少,正如@leb所建议的那样,您应该从“except”,追溯或至少一个错误描述中获得更多信息。 –
我结束了刚刚使用for循环,并拿出了尝试/除了。我是编程新手,所以我会采取微小的工作步骤。另外显然MySQLdb库不适用于我的版本。 – summerdaiz
你可以尝试traceback'加上'你'except'所以你知道为什么它给你的错误。除此之外,这是一个“为什么不是我的代码工作”的问题,这是脱离主题的SO。 – Leb