MySQLdb:在程序上填充新列时,所有值都设置为NULL

时间:2017-02-27 11:22:06

标签: python mysql

我正在使用Python和MySQLdb处理一个简单的MySQL数据库,我创建了一些函数来操作数据库而无需在主脚本中键入SQL查询。

其中一个函数应该在我的表中添加一个新列,并立即用给定python列表中的值填充它。虽然它没有:实际创建了新列,但是里面的所有值都保持为NULL ...你知道我在哪里犯了错误吗?以下是主要脚本及其使用的子功能。

password = "*********"
name = "database9000"
conn = connect_database(name,password)
add_column("MYTABLE", "MYCOLUMN", mylist, conn) *# where "mylist" is a 9000+ elements list*
disconnect_database(conn)

def connect_database(dbname, password) :
    conn = mdb.connect(host = "localhost", user = "root", passwd = password, db = dbname)
    return conn

def disconnect_database(conn) :
    conn.close()

add_column(tablename, columnname, mylist, conn) :
    cs = conn.cursor()
    cs.execute("ALTER TABLE %s ADD %s DOUBLE" % (tablename, columnname))
    for n in range(len(mylist)) :
        cs.execute("UPDATE %s SET %s = %f WHERE id = %d" % (tablename, columnname, float(mylist[n]), n+1))

由于

1 个答案:

答案 0 :(得分:0)

您没有提交更改。

请注意,在MySQL中,架构更改不会在事务中发生,但数据更新会发生。因此,您需要致电conn.commit()