Solução de problemas de operações de inserção do MySQL no Python
Em Python, ao usar a API MySQL para interagir com um banco de dados MySQL, a inserção de registros pode encontrar obstáculos. Este artigo aborda um problema em que os registros não são inseridos apesar da implementação aparentemente correta.
O código fornecido estabelece uma conexão com o banco de dados e tenta inserir um registro na tabela de 'documentos'. No entanto, a operação de inserção falha. Para resolver esse problema, é crucial entender a importância das transações do banco de dados.
No MySQL, as alterações no banco de dados são gerenciadas por meio de transações. Uma transação começa quando uma conexão é estabelecida e termina quando a conexão é fechada ou quando uma operação de commit ou rollback é chamada explicitamente. Quaisquer alterações feitas no banco de dados durante uma transação não são permanentes até que a transação seja confirmada.
No código fornecido, a operação de inserção é executada com sucesso, mas as alterações não são confirmadas no banco de dados antes que a conexão seja fechada (usando db.close()). Sem confirmar a transação, a operação de inserção é descartada assim que a conexão é fechada.
Para resolver esse problema e garantir que a operação de inserção seja bem-sucedida, você deve incluir uma chamada para db.commit() antes de fechar a conexão com o banco de dados . Esta ação confirma a transação, tornando o registro inserido persistente no banco de dados.
Aqui está o código modificado que inclui a operação de commit:
db = MySQLdb.connect("localhost", "root", "padmaramulu", "pdfsearch")
cursor = db.cursor()
# cursor.execute("""CREATE TABLE IF NOT EXISTS documents (docid INT NOT NULL ,PRIMARY KEY(docid),docname CHAR(30)) engine=innodb""")
temp = "hello"; number = 2;
cursor.execute('insert into documents(docid,docname) values("%d","%s")' % (number, temp))
db.commit()
db.close()
Ao incluir a chamada db.commit(), as alterações feitas durante a transação, incluindo a operação de inserção, são confirmadas no banco de dados e se tornam permanentes.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3