Não há necessidade de usar um gerador para fazer um loop sobre
mydata . Basta passar mydata diretamente:cur.executemany(sql, mydata)
O adaptador de banco de dados fará um loop sobre
mydata para você e uma expressão geradora apenas insere um loop extra desnecessário. Se você não receber nenhuma mensagem de erro, mas também não houver alterações, verifique o seguinte:
-
Certifique-se de confirmar a transação; executecon.commit()após o.executemany()ligar.
-
Verificação tripla quemydatanão está vazio.
O adaptador de banco de dados manipulará corretamente os valores flutuantes para você; se uma coluna estiver marcada como
FLOAT NOT NULL e você passa um valor flutuante do Python para essa coluna, Things Just Work. É para isso que servem os parâmetros SQL, manipulando corretamente a citação de diferentes tipos de dados.