使用python脚本填充数据库

时间:2015-10-18 03:37:30

标签: python mysql sql database populate

我正在尝试使用以下脚本填充我的数据库,该脚本根本不运行查询,而是直接转到except并打印错误消息。任何人都可以使用名为insertGuest()的函数识别问题:

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")

我也想要数据,尤其是名称有意义,但是如果我可以获得随机字符串那么就必须这样做。

由于 夏季

2 个答案:

答案 0 :(得分:2)

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])

(这假设您使用import MySQLdb as mdb导入MySQLdb,否则相应地调整mdb名称。)

答案 1 :(得分:0)

根据情况,最好将字符串与+符号连接起来,如下所示:

addGuest = "INSERT INTO hotel_guests VALUES (" + int(i) + ", 'Name" + str(i) + "', 'gender" + str(i) + "')"

我在自己的project中采用了这种方法(用虚假/伪造但有效的数据填充数据库),因为查询时间长且复杂。您可能想看看。