2013-10-08 91 views
0

嘗試插入數據庫後發生錯誤。我執行後收回以下回溯:Python/MySQL TypeError:execute()需要2到4個位置參數,但有5個被給出

Traceback (most recent call last): 
File "C:\Python33\Archive\MySQL-teste12.py", line 278, in <module> 
inserir(cursor, cx2) 
File "C:\Python33\Archive\MySQL-teste12.py", line 196, in inserir 
cursor.execute(add_produto, va, input_date, vc) 
TypeError: execute() takes from 2 to 4 positional arguments but 5 were given 

嘗試插入數據庫後,執行時發生錯誤。 這裏是代碼:

def inserir (cursor, db): 
menu3 = 0 
while menu3 != 99: 
    print(""" 
----- Menu Banco MARK II, v.1.00, MySQL, VR ----- 

      ----- Menu de Inserção ---- 


1.Inserir em produto. 
2.Inserir em cliente. 
3.Inserir em empregado. 
4.Inserir em salario. 
99.Sair. 

    """) 
    menu3 = input("Digite sua Opção") 

    if menu3 == '1': 
     va = input(""" 

        Digite o Nome do Produto. 

        """) 

     vb = input(""" 

        Digite a data de Lançamento do Produto (Ano/mês/dia). 

        """) 
     input_date = datetime.strptime(vb, '%Y/%m/%d') 

     vc = input(""" 

        Digite o Preço do Produto (ex: 20, 20.33). 

        """) 

     add_produto = """INSERT INTO produto(nome, 
       data_lcm, preco) 
       VALUES (%s, %s, %s)""" 

     #try: 
     cursor.execute(add_produto, va, input_date, vc) 
     db.commit() 
     print(""" 
       Inserção concluida com sucesso. 

       """) 
     #except: 
     # db.rollback() 
      # print(""" 

      #  Erro. 

      # """) 
    if menu3 == '99': 
     break 

感謝您的任何幫助。

回答

4

的問題是爭論的cursor.execute需要被指定爲一個元組,而不是個別。

嘗試用

 cursor.execute(add_produto, (va, input_date, vc)) 
+0

你真是個該死的天才哈哈,謝謝更換

 cursor.execute(add_produto, va, input_date, vc) 

! – Rex

1

你肯定沒有得到正確的東西。你的參數列表很多。這是一個例子:

import MySQLdb 
db=MySQLdb.connect(passwd="root",db="playful") 
cursor=db.cursor() 
use = 'python' 
c.execute("""SELECT the_error FROM coding WHERE tag < %s""", (use,)) 

``

相關問題