Welcome to Our Website

Tutorial Python SQLite3 (Database programming)

neste tutorial, trabalharemos com a base de dados SQLite3 programaticamente usando Python.

SQLite em geral é um banco de dados sem servidor que você pode usar em quase todas as linguagens de programação, incluindo Python. Server-less significa que não há necessidade de instalar um servidor separado para trabalhar com o SQLite para que você possa se conectar diretamente com o banco de dados.

SQLite é um banco de dados leve que pode fornecer um sistema de gerenciamento de banco de dados relacional com configuração zero, porque não há necessidade de configurar ou configurar qualquer coisa para usá-lo.,

usaremos a versão SQLite 3 ou SQLite3, então vamos começar.

tabela de conteúdos

criar uma ligação

para usar o SQLite3 em Python, em primeiro lugar, terá de importar o módulo sqlite3 e então criar um objecto de ligação que irá ligar-nos à base de dados e permitir-nos-á executar as declarações SQL.

pode ser um objecto de ligação usando a função connect ():

import sqlite3con = sqlite3.connect('mydatabase.db')

que irá criar um novo ficheiro com o nome ‘mydatabase.PO’.,

sqlite3 Cursor

para executar declarações SQLite em Python, você precisa de um objecto cursor. Você pode criá-lo usando o método cursor ().

o cursor SQLite3 é um método do objecto de ligação. Para executar o SQLite3 instruções, você deve estabelecer uma ligação e, em seguida, crie um objeto do cursor usando o objeto de conexão da seguinte forma:

con = sqlite3.connect('mydatabase.db')cursorObj = con.cursor()

Agora, podemos usar o objeto de cursor para chamar o método execute() para executar consultas SQL.,

crie uma base de dados

quando criar uma ligação com o SQLite, isso irá criar um ficheiro de base de dados automaticamente se já não existir. Este arquivo de banco de dados é criado no disco; nós também podemos criar um banco de dados em RAM usando :memory: com a função conectar. Esta base de dados é chamada de banco de dados em memória.

considere o código abaixo no qual criamos um banco de dados com uma tentativa, exceto e finalmente bloqueia para lidar com quaisquer exceções:

primeiro, importamos o módulo sqlite3, então definimos uma função sql_connection., Dentro desta função, temos um bloco de tentativa onde a função connect() está retornando um objeto de conexão depois de estabelecer a conexão.

então temos exceto bloco, que em caso de qualquer exceção imprime a mensagem de erro. Se não houver erros, a conexão será estabelecida e exibirá uma mensagem como segue.

Depois disso, fechamos a nossa ligação no bloco final. Fechar uma conexão é opcional, mas é uma boa prática de programação, então você libera a memória de quaisquer recursos não utilizados.,

Criar Tabela

para criar uma tabela em SQLite3, você pode usar a pesquisa de tabela Create no método execute (). Considere os seguintes passos:

  1. crie um objeto de conexão.
  2. do objecto de ligação, crie um objecto cursor.
  3. usando o objecto do cursor, chame o método de execução com a opção Criar uma consulta de tabela como parâmetro.,

Vamos criar os empregados, com os seguintes atributos:

employees (id, name, salary, department, position, hireDate)

O código ficará assim:

No código acima, definimos dois métodos, o primeiro estabelece uma conexão e o segundo método cria um objeto de cursor para executar a instrução create table.

o método commit() salva todas as alterações que fazemos. No final, ambos os métodos são chamados.

para verificar se a nossa tabela é criada, você pode usar o navegador DB para SQLite para ver a sua tabela. Abra o seu mydatabase.,db file with the program, and you should see your table:

Insert in Table

para inserir dados em uma tabela, nós usamos o INSERT INTO statement. Considere a seguinte linha de código:

cursorObj.execute("INSERT INTO employees VALUES(1, 'John', 700, 'HR', 'Manager', '2017-01-04')")con.commit()

Para verificar se os dados são inseridos, clique em Procurar Dados no banco de Navegador:

também podemos passar valores/argumentos para uma instrução INSERT no método execute (). Você pode usar o ponto de interrogação (?) como um substituto para cada valor., A sintaxe de INSERÇÃO, será como a seguir:

cursorObj.execute('''INSERT INTO employees(id, name, salary, department, position, hireDate) VALUES(?, ?, ?, ?, ?, ?)''', entities)

, Onde entidades contêm os valores para os espaços reservados da seguinte forma:

entities = (2, 'Andrew', 800, 'IT', 'Tech', '2018-02-06')

todo O código é o seguinte:

Atualização de Tabela

Para atualizar a tabela, basta criar uma conexão e, em seguida, crie um objeto de cursor usando a conexão e, finalmente, usar a instrução UPDATE no método execute ().suponha que queremos atualizar o nome do empregado cujo id é igual a 2., Para a atualização, vamos usar a declaração de atualização e para o funcionário cujo id é igual a 2. Usaremos a cláusula onde como condição para selecionar este funcionário.

Considere o código a seguir:

Isto irá alterar o nome de Andrew para Rogers, da seguinte forma:

instrução Select

Você pode usar a instrução select para selecionar dados de uma tabela específica. Se você quiser selecionar todas as colunas dos dados de uma tabela, você pode usar o asterisco (*)., A sintaxe para isso será a seguinte:

select * from table_name

em SQLite3, a instrução SELECT é executada no método de execução do objeto cursor., Por exemplo, selecione todas as colunas dos empregados de mesa, executar o código a seguir:

cursorObj.execute('SELECT * FROM employees ')

Se você deseja selecionar algumas colunas de uma tabela e, em seguida, especifique as colunas como o seguinte:

select column1, column2 from tables_name

Por exemplo,

cursorObj.execute('SELECT id, name FROM employees')

A instrução select seleciona os dados necessários a partir da tabela de banco de dados, e se você deseja obter os dados selecionados, o método fetchall() do objeto de cursor é usado. Vamos demonstrá-lo na próxima secção.,

obtenha todos os dados

para obter os dados de uma base de dados, executaremos a instrução SELECT e então usaremos o método fetchall() do objecto cursor para armazenar os valores numa variável. Depois disso, vamos percorrer a variável e imprimir todos os valores.

O código ficará assim:

O código acima irá imprimir os registros em nosso banco de dados como a seguir:

Você também pode usar a fetchall() em uma linha da seguinte forma:


Se você deseja buscar dados específicos do banco de dados, você pode usar a cláusula WHERE., Por exemplo, queremos ir buscar as identificações e nomes dos empregados cujo salário é superior a 800. Para isso, vamos povoar nossa tabela com mais linhas, em seguida, executar a nossa consulta.

pode usar a instrução insert para preencher os dados, ou pode introduzi-los manualmente no programa de navegação DB.

agora, para obter id e nomes daqueles que têm um salário superior a 800:

na instrução de seleção acima, em vez de usar o asterisco (*), especificamos os atributos id e nome., O resultado será como o seguinte:

SQLite3 rowcount

o número de linhas sqlite3 é usado para devolver o número de linhas que são afetadas ou selecionadas pela última consulta SQL executada.

Quando usarmos o número de linhas com a instrução SELECT, -1 será devolvido, dado que o número de linhas seleccionadas é Desconhecido até que todas sejam obtidas., Considere o exemplo abaixo:

print(cursorObj.execute('SELECT * FROM employees').rowcount)

Portanto, para obter a contagem de linha, você precisará obter todos os dados e, em seguida, obter o comprimento do resultado:

rows = cursorObj.fetchall()print len (rows)

Quando você usar a instrução DELETE sem qualquer condição (uma cláusula where), que irá excluir todas as linhas na tabela, e ele irá retornar o número total de linhas excluídas no número de linhas.

print(cursorObj.execute('DELETE FROM employees').rowcount)

Se nenhuma linha for eliminada, ela irá retornar zero.,

List tables

para listar todas as tabelas numa base de dados SQLite3, deverá consultar a tabela sqlite_master e então usar a fetchall() para obter os resultados da instrução SELECT.

o sqlite_master é a tabela principal em SQLite3, que armazena todas as tabelas.

isto listará todos os quadros da seguinte forma:

verifique se existe ou não uma tabela

ao criar uma tabela, devemos certificar-nos de que a tabela não existe já. Da mesma forma, ao remover/ apagar uma tabela, a tabela deve existir.,s” com a instrução DROP TABLE da seguinte forma:

drop table if exists table_name

Por exemplo,

cursorObj.execute('drop table if exists projects')

também é possível verificar se a tabela que deseja acessar existe ou não executar a consulta seguinte:

cursorObj.execute('SELECT name from sqlite_master WHERE type = "table" AND name = "employees"')print(cursorObj.fetchall())

Se os funcionários tabela existe, ele irá retornar o seu nome da seguinte forma:

Se o nome de tabela especificado não existir, uma matriz vazia será retornada:

Drop table

Você pode soltar/excluir uma tabela usando a instrução DROP., A sintaxe da instrução DROP é a seguinte:

drop table table_name

para deixar cair uma tabela, a tabela deve existir na base de dados. Portanto, é recomendado o uso de “se existe” com a instrução drop da seguinte forma:

drop table if exists table_name

Por exemplo,

SQLite3 exceções

Exceções são os erros de tempo de execução. Na programação Python, todas as exceções são as instâncias da classe derivada da Baseexcepção.,

em SQLite3, temos as seguintes exceções principais em Python:

DatabaseError

qualquer erro relacionado com a base de dados aumenta o erro da Base de dados.

IntegrityError

IntegrityError é uma subclasse de DatabaseError e é gerado quando há um problema de integridade de dados. Por exemplo, os dados estrangeiros não são atualizados em todas as tabelas resultando na inconsistência dos dados.

ProgrammingError

the exception ProgrammingError raises when there are syntax errors or table is not found or function is called with the wrong number of parameters/ arguments.,

erro Operacional

esta excepção é levantada quando as operações da base de dados são mal-sucedidas, por exemplo, desconexão incomum. Isto não é culpa dos programadores.

NotSupportedError

quando você usa alguns métodos que não são definidos ou suportados pela base de dados, isso irá aumentar a exceção Notsupporterror.

sqlite3 Executemany (Bulk insert)

pode usar a instrução executemany para inserir várias linhas de uma vez.

considere o seguinte código:

aqui criamos uma tabela com duas colunas, e” dados ” tem quatro valores para cada coluna., Passamos a variável para o método executemany() junto com a consulta.

Note que nós usamos o espaço para passar os valores.

o código acima irá gerar o seguinte resultado:

Close Connection

Uma vez terminada a sua base de dados, é uma boa prática fechar a ligação. Você pode fechar a conexão usando o método close ().,

Para fechar uma conexão, usar a conexão de objeto e chamar o método close() da seguinte forma:

con = sqlite3.connect('mydatabase.db')#program statementscon.close()

SQLite3 datetime

Em Python banco de dados SQLite3, podemos facilmente armazenar a data ou a hora importando o datahora módulo. Os seguintes formatos são os mais comuns formatos que você pode usar para datetime:

YYYY-MM-DDYYYY-MM-DD HH:MMYYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS.SSSHH:MMHH:MM:SSHH:MM:SS.SSSnow

Considere o código a seguir:

este código, importamos o módulo datetime primeiro, e criamos uma tabela chamada atribuições com três colunas.

O tipo de dados da terceira coluna é uma data., Para inserir a data na coluna, usamos datetime.data. Da mesma forma, podemos usar datetime.hora de lidar com o tempo.

o código acima irá gerar o seguinte resultado:

a grande flexibilidade e mobilidade da base de dados SQLite3 torna a primeira escolha para qualquer desenvolvedor usá-la e enviá-la com qualquer produto com o qual ele trabalhe.

Você pode usar bases de dados SQLite3 em Windows, Linux, Mac OS, Android, e projetos iOS devido à sua incrível portabilidade. Envias um ficheiro com o teu projecto e pronto.

espero que ache o tutorial útil., Continua a voltar.obrigado.

Ayesha Tariq é uma pilha completa engenheiro de software, desenvolvedor web, e blockchain desenvolvedor entusiasta. Ela tem amplo conhecimento de C / C++, Java, Kotlin, Python e vários outros.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *