2013-10-03 25 views
0

我的程序執行的功能在數據庫中插入後向我發送以下錯誤消息未知列「d」:的Python/MySQL的ProgrammingError:1054(42S22):在「字段列表」

Traceback: 
`Traceback (most recent call last): 
    File "C:\Python33\Archive\MySQL-teste12.py", line 275, in <module> 
    inserir(cursor, cx2) 
    File "C:\Python33\Archive\MySQL-teste12.py", line 193, in inserir 
    cursor.execute(add_produto) 
    File "C:\Python33\lib\site-packages\mysql\connector\cursor.py", line 415, in execute 
    self._handle_result(self._connection.cmd_query(stmt)) 
    File "C:\Python33\lib\site-packages\mysql\connector\connection.py", line 593, in cmd_query 
    result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query)) 
    File "C:\Python33\lib\site-packages\mysql\connector\connection.py", line 515, in _handle_result 
    raise errors.get_exception(packet) 
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'd' in 'field list'` 

以下表正試圖插入:

produto = """ 
    CREATE TABLE produto (
    prod_nu int(11) NOT NULL AUTO_INCREMENT, 
    nome varchar(30) NOT NULL, 
    data_lcm date NOT NULL, 
    preco int(11) NOT NULL, 
    PRIMARY KEY (prod_nu) 
    ) ENGINE=InnoDB 
    """ 

以下是發生錯誤的過程。我相信它不接受任何格式的日期。我嘗試過許多變化,其中沒有工作:

def inserir (cursor, db): 
    # excess code removed     
    vb = input('Digite a data de Lançamento do Produto (Ano/mês/dia).') 
    now = time.strftime('vb') 
    … 
    add_produto = ("""INSERT INTO produto(nome, 
         data_lcm, preco) 
         VALUES (%s, %s, %s)""" % (va,vb,vc)) 

    cursor.execute(add_produto) 
      … 
+0

請嘗試僅包括在您的問題相關的代碼。它可以更容易地看到錯誤。 – msw

回答

1

有兩個問題,第一個是你從來沒有創建一個date對象。鑑於你的指令(肛/ MES/DIA),這將是像

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

的第二個問題是,

now = time.strftime('vb') 

now'vb'因爲它裏面沒有的strftime指令。如果你正在尋找一個標準的時間格式,這是很難出錯date.isoformat()這將使

now = input_date.isoformat() 
+0

另外不要忘記解析查詢,而不是傳入值作爲參數('%(va,vb,vc)') –

相關問題