Python MySQLdb未插入。。。我有cursor.commit()

Python MySQLdb未插入。。。我有cursor.commit(),python,mysql,Python,Mysql,我为冗长的代码提前道歉,但这可能是相关的。制作新代码来演示也更容易。我可以使用phpMyAdmin删除该表,运行该脚本,然后返回phpMyAdmin并查看它是否创建了该表。但是,该表为空,该脚本应填充一个测试行 import MySQLdb def makeTable(): dbInfo = { 'username':'livetaor_atowrw', 'password':'~HIDDEN~', \ 'server':'~HIDDEN~.com', 'base':

我为冗长的代码提前道歉,但这可能是相关的。制作新代码来演示也更容易。我可以使用phpMyAdmin删除该表,运行该脚本,然后返回phpMyAdmin并查看它是否创建了该表。但是,该表为空,该脚本应填充一个测试行

import MySQLdb  
def makeTable():  
    dbInfo = { 'username':'livetaor_atowrw', 'password':'~HIDDEN~', \  
    'server':'~HIDDEN~.com', 'base':'livetaor_towing', \  
    'table':'inventory' }  
    try:  
        sql = MySQLdb.connect(user=dbInfo['username'], \  
        passwd=dbInfo['password'], \  
        host=dbInfo['server'], db=dbInfo['base'])  
        cursor = sql.cursor ()  
        cursor.execute ("SELECT VERSION()")  
        cursor.execute ("""   
            CREATE TABLE inventory (   
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,   
            itemNumber VARCHAR(24),   
            itemDescription VARCHAR(255),   
            itemCategory VARCHAR(24),   
            itemVendor VARCHAR(48),   
            itemVendorItemNumber VARCHAR(24),   
            itemCost FLOAT,   
            itemMarkup FLOAT,   
            item4Customers BOOL,   
            itemOnReplenishment BOOL,   
            itemReplenishAlert INT,   
            itemBolivarQuantity INT,   
            itemLamarQuantity INT,   
            itemSpringfieldQuantity INT )   
        """)  
        cursor.execute ("""   
            INSERT INTO inventory (   
            itemNumber,   
            itemDescription,   
            itemCategory,   
            itemVendor,   
            itemVendorItemNumber,   
            itemCost,   
            itemMarkup,   
            item4Customers,   
            itemOnReplenishment,   
            itemReplenishAlert,   
            itemBolivarQuantity,   
            itemLamarQuantity,   
            itemSpringfieldQuantity,   
            ) VALUES (   
            'TestItemNumber001',   
            'fictitious item description',   
            'TestCategory',   
            'Scripted Vendor',   
            'ITEM:maketable.py',   
            '1.00',   
            '1.33',   
            '1',   
            '1',  
            '6',    
            '65613',   
            '64759',   
            '65802'   
            )   
        """)  
        cursor.commit()  
        cursor.close()  
        sql.close()  
    except MySQLdb.Error, e:  
        error =  "Error %d: %s" % (e.args[0], e.args[1])  
confirm = None  
confirm = raw_input('Do you know what you are doing? ')  
if confirm == 'YeS':  
    makeTable()  
else:  
    print "Didn't think so. Now, it's probably best to forget about this file."  

除非我失去理智


您的插入显示13列和12个值。

除非我丢失了弹珠


您的insert显示了13列和12个值。

对于代码的问题有一些猜测,但我将处理您的隐式问题,而不是未说的问题

该问题内容如下:

我的程序运行时,不会崩溃,但我的表是空的。为什么呢

这是一个稍微不同的问题,它没有崩溃的原因是因为您明确告诉它不要崩溃:

看到这个代码了吗

except MySQLdb.Error, e:
    error = "Error %d: %s" % (e.args[0], e.args[1])
这将捕获异常,并将异常消息和其他位放入错误变量中

但是,除非您检查该变量并对其内容进行操作,否则您实际上是在吞咽异常

删除该位并重新执行程序,您将找到程序失败的真正原因

就我个人而言,在列出所有列名之后,我猜这是SQL中额外的逗号,如下所示:

itemLamarQuantity,
itemSpringfieldQuantity,        <-- here
) VALUES (
'TestItemNumber001',
'fictitious item description',
itemlarquantity,

itemSpringfieldQuantity,关于代码的问题有一些猜测,但我将处理您的隐式问题,但是没有说出来

该问题内容如下:

我的程序运行时,不会崩溃,但我的表是空的。为什么呢

这是一个稍微不同的问题,它没有崩溃的原因是因为您明确告诉它不要崩溃:

看到这个代码了吗

except MySQLdb.Error, e:
    error = "Error %d: %s" % (e.args[0], e.args[1])
这将捕获异常,并将异常消息和其他位放入错误变量中

但是,除非您检查该变量并对其内容进行操作,否则您实际上是在吞咽异常

删除该位并重新执行程序,您将找到程序失败的真正原因

就我个人而言,在列出所有列名之后,我猜这是SQL中额外的逗号,如下所示:

itemLamarQuantity,
itemSpringfieldQuantity,        <-- here
) VALUES (
'TestItemNumber001',
'fictitious item description',
itemlarquantity,

itemSpringfieldQuantity,是否不应该在游标上提交

cursor.close()
sql.commit()  
sql.close()  

它不应该在游标上提交吗

cursor.close()
sql.commit()  
sql.close()  

PS我想是第4项客户丢失了。不,你没有失去它!你提到了,我不得不看了好几遍。缺少的是警报。我在上面的源代码中更正了它,但是它仍然不正确。在列部分的最后一个列名后面还有一个逗号。PS我想是Item4客户丢失了。不,你没有丢失它!你提到了,我不得不看了好几遍。缺少的是警报。我在上面的源代码中更正了它,但是它仍然不正确。在columns部分的最后一个列名后面还有一个逗号。如何处理“error”变量?如果您正在吞咽异常,请先停止这样做,然后应该很容易找出失败的原因。@Lasse这应该是一个答案……您如何处理“error”变量?如果您正在吞咽异常,请先停止这样做,然后就可以很容易地找出失败的原因。@Lasse这应该是一个答案。。。