Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível adicionar uma coluna de um quadro de dados pandas ao mysql em python


Você não pode adicionar uma coluna à sua tabela com dados em uma única etapa. Você deve usar pelo menos duas instruções separadas para executar o DDL primeiro (ALTER TABLE ) e o segundo DML (UPDATE ou INSERT ... ON DUPLICATE KEY UPDATE ).

Isso significa que para adicionar uma coluna com um NOT NULL restrição requer três etapas:
  1. Adicionar coluna anulável
  2. Preencha a coluna com valores em cada linha
  3. Adicione o NOT NULL restrição à coluna

Alternativamente, usando um valor padrão "fictício", você pode fazer isso em duas etapas (apenas tome cuidado para não deixar nenhum valor "fictício" flutuando ou use valores significativos/bem documentados):
  1. Adicionar coluna como NOT NULL DEFAULT '' (ou use, por exemplo, 0 para tipos numéricos)
  2. Preencha a coluna com valores em cada linha

Você pode, opcionalmente, alterar a tabela novamente para remover o DEFAULT valor. Pessoalmente, prefiro o primeiro método porque ele não introduz valores sem sentido em sua tabela e é mais provável que gere um erro se a segunda etapa tiver um problema. Eu poderia vá com o segundo método quando uma coluna se presta a um certo DEFAULT natural value e pretendo manter isso na definição da tabela final.

Além disso, você não está parametrizando sua consulta corretamente; você deve passar os valores dos parâmetros para o método em vez de formatar o argumento string dentro da chamada do método. Em outras palavras:
cursor.execute("Query with %s, %s, ...", iterable_with_values)  # Do this!
cursor.execute("Query with %s, %s, ..." % iterable_with_values)  # NOT this!