o objectivo deste tutorial em Python SQLite é demonstrar como desenvolver aplicações em bases de dados em Python com a base de dados em SQLite. Você vai aprender como executar operações de banco de dados SQLite a partir de Python.
Como todos sabem, SQLite é uma biblioteca de linguagem C que implementa um motor de banco de dados SQL que é relativamente rápido, sem serventia e auto-suficiente, de alta confiabilidade. O SQLite é o motor de banco de dados mais usado no ambiente de teste (Veja a página inicial do SQLite)., O SQLite vem integrado com a maioria dos computadores e dispositivos móveis e navegadores. O módulo oficial sqlite3 do Python ajuda-nos a trabalhar com a base de dados SQLite.
Python sqlite3 module adere à especificação da API da base de dados Python v2. 0 (PEP 249). O PEP 249 fornece uma interface SQL que foi projetada para incentivar e manter a semelhança entre os módulos Python que são usados para acessar bases de dados.,
Este tutorial centra –se principalmente em: –
- ligando-se à base de dados SQLite a partir de Python e criando uma base de dados SQLite e tabelas
- Em seguida, vamos cobrir os tipos de dados SQLite e os tipos de Python correspondentes
- Em seguida, vamos aprender como executar a operação SQLite CRUD.,ieve digital de dados em SQLite usando Python
- em seguida, ele irá cobrir SQLite Tratamento da transação, criando e chamando SQLite funções, e técnicas de tratamento de erros para desenvolver robusto programas python com banco de dados SQLite
- Ele também irá permitir que você saiba como criar e gerenciar um banco de dados na memória e converter SQLite valores personalizados para Python tipos
- faça um backup do banco de dados SQLite de dentro do Python
Vamos ver cada seção agora.,
Python SQLite Connection
Esta secção permite-lhe saber como criar uma base de dados SQLite e ligar-se a ela através do python usando o módulo sqlite3.
para estabelecer uma ligação ao SQLite, precisa de indicar o nome da base de dados que deseja ligar. Se você especificar o nome do arquivo de banco de dados que já apresenta no disco, ele se conectará a ele. Mas se o seu ficheiro de base de dados SQLite especificado não existir, o SQLite cria uma nova base de dados para si.,
tem de seguir os seguintes passos para se ligar ao SQLite
- Use o
connect()
método de um módulo sqlite3 e passe o nome da base de dados como argumento. - crie um objecto de cursor usando o objecto de ligação devolvido pelo método connect para executar consultas SQLite a partir do Python.
- fecha o objecto do Cursor e o objecto de ligação à base de dados SQLite quando o trabalho estiver terminado.excepção à base de dados de capturas, se for caso disso, durante este processo de ligação.
o seguinte programa Python cria um novo ficheiro de base de dados “SQLite_Python.,db ” e imprime os detalhes da versão SQLite.
deverá obter o seguinte resultado após se ligar ao SQLite a partir do Python.
Database created and Successfully Connected to SQLiteSQLite Database Version is: The SQLite connection is closed
Entender o SQLite Código de conexão em detalhes
import sqlite3
- Esta linha importa o módulo sqlite3 no nosso programa. Usando as classes e métodos definidos no módulo sqlite3 podemos nos comunicar com o banco de dados SQLite.
sqlite3.,connect ()
- usando o método
connect()
podemos criar uma ligação à base de dados SQLite. Este método devolve o objecto de ligação SQLite. - o objecto de ligação não é seguro por thread. o módulo sqlite3 não permite a partilha de ligações entre threads. Se você ainda tentar fazê-lo, você terá uma exceção no tempo de execução.
- o método
connect()
aceita vários argumentos. No nosso exemplo, passamos o argumento do nome do banco de dados para conectar.
cursor = sqliteconnection.,cursor ()
- usando um objecto de ligação, podemos criar um objecto de cursor que nos permite executar o comando/consultas SQLite através do Python.
- Podemos criar os cursores que quisermos de um único objeto de conexão. Tal como o objecto de ligação, este objecto cursor também não é seguro para o tópico. o módulo sqlite3 não permite partilhar Cursores entre threads. Se você ainda tentar fazê-lo, você terá uma exceção no tempo de execução.
Depois disso, criamos uma consulta SQLite para obter a versão da base de dados.
cursor.,execute ()
- usando o método de execução do cursor podemos executar uma operação de banco de dados ou consulta em Python. O método
cursor.execute()
toma uma consulta SQLite como um parâmetro e retorna o resultado, ou seja, nada mais que uma linha de banco de dados. - Podemos obter o resultado da consulta a partir de resultSet usando métodos de cursor como
- no nosso exemplo, estamos a executar um
SELECT version();
query para obter a versão SQLite.,
try-except-finally block: colocámos todo o nosso código na tentativa-excepto bloco para apanhar as excepções e erros da base de dados SQLite que podem ocorrer durante este processo.
- usando o
sqlite3.Error
classe do módulo sqlite3, nós podemos lidar com qualquer erro de banco de dados e exceção que pode ocorrer durante o trabalho com SQLite de Python.usando esta abordagem podemos tornar a nossa aplicação robusta. A classesqlite3.Error
nos ajuda a entender o erro em detalhes. Ele retorna uma mensagem de erro e código de erro.
cursor.close() and connection.,fechar ()
- É sempre uma boa prática fechar o cursor e o objecto da ligação uma vez que o seu trabalho seja completado para evitar problemas de bases de dados.
crie uma tabela SQLite a partir de Python
nesta secção, vamos aprender a criar uma tabela na base de dados SQLite a partir de Python usando o módulo sqlite3. Criar uma indicação de tabela é uma consulta DDL deixe ver como executá-lo a partir de Python.
neste exemplo, estamos a criar uma tabela “Sqlitedb_ Developers” dentro da ” SQLite_Python.base de dados db.,
Steps for creating a table in SQLite from Python: –
- Connect to SQLite using a
sqlite3.connect()
. Eu expliquei o código de conexão SQLite no início deste artigo. - Prepare uma consulta de tabela create.
- Execute a consulta usando um id
- No final, feche a ligação da base de dados SQLite e o objecto do cursor.,
Resultado:
Successfully Connected to SQLiteSQLite table created:the sqlite connection is closed
tipos de Dados SQLite e é correspondente Python tipos
Antes de prosseguir na execução SQLite as operações CRUD a partir de Python, primeiro, entender o tipo de dados SQLite e o seu correspondente em Python tipos, o que vai nos ajudar para armazenar e ler dados do SQLite tabela.
SQLite database engine has multiple storage classes to store values. Cada valor armazenado em um banco de dados SQLite tem uma das seguintes classes de armazenamento ou tipos de dados.,
SQLite DataTypes:
- NULL: – O valor é um valor nulo.
- inteiro – – para guardar o valor numérico. O número inteiro gravado em 1, 2, 3, 4, 6, ou 8 bytes dependendo da magnitude do número.
- REAL: – o valor é um valor de ponto flutuante, por exemplo, valor 3.14 de PI
- texto: – o valor é uma cadeia de texto, valor de texto armazenado usando a codificação UTF-8, UTF-16BE ou UTF-16LE.
- BLOB: – o valor é uma blob de dados, ou seja, dados binários. É usado para armazenar imagens e arquivos.
os seguintes tipos de Python convertidos para SQLite sem qualquer problema., Então, quando você estiver modificando ou lendo a partir da tabela SQLite, executando operações CRUD, lembre-se desta tabela.,
Python type | SQLite type |
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
Perform SQLite CRUD Operations from Python
Most of the time, we need to manipulate the SQLite table’s data from Python. To perform these data manipulations, we can execute DML queries i.e.,, SQLite Insert, Update, Delete operations from Python.
agora, conhecemos a tabela, e são detalhes da coluna, então vamos passar para as operações crud. Eu criei um tutorial separado em cada operação para cobri-lo em detalhes. Vamos ver cada secção agora.
- inserir dados na tabela SQLite do Python – nesta secção, vamos aprender a executar o comando Inserir do python para inserir registos na tabela SQLite.
- leia os dados da tabela SQLite em Python – neste artigo, vamos aprender como executar a consulta SQLite seleccione a partir de uma aplicação em Python para obter as linhas da tabela., Também, eu vou deixar você saber como usar
fetchall()
fetchmany()
efetchone()
métodos de um cursor de classe para buscar limitado de linhas da tabela para melhorar o desempenho. - actualiza os dados da tabela SQLite do Python – nesta secção, vamos aprender a executar a consulta de actualização do python para modificar os registos da tabela SQLite.
- apagar os dados da tabela SQLite do Python – nesta secção, vamos aprender a executar a consulta DELETE do python para remover os registos da tabela SQLite.,
Execute SQL File (scripts) usando a função executescript do cursor
scripts SQLite são úteis para a maior parte da tarefa diária. Script SQLite é um conjunto de comandos SQL salvos como um arquivo (em .formato sql).
Um script SQLite contém uma ou mais operações SQL que você executará a partir de sua linha de comandos sempre que necessário.
abaixo estão os poucos cenários comuns onde podemos usar scripts SQLite
- Back-Up múltiplas bases de dados ao mesmo tempo.
- Compare as contagens de linhas em tabelas de duas bases de dados diferentes com o mesmo esquema.,
- mantenha todos os seus comandos Criar tabela SQL num programa de base de dados. Então você pode criar esquema de banco de dados em qualquer servidor.
pode executar o seu programa a partir da linha de comandos SQLite usando o .comando de leitura, como este:
sqlite> .read mySQLiteScript.sql
para este exemplo, criei um script SQLite de amostra que irá criar duas tabelas. Este é o guião que eu criei.
CREATE TABLE hardware ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);CREATE TABLE software ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, price REAL NOT NULL);
Agora vamos ver como executar um script SQLite de dentro do Python.
Saída: tabelas SQLite criadas executando um script SQL do Python.,
Successfully Connected to SQLiteSQLite script executed successfullysqlite connection is closed
Nota: Depois de ligar para o SQLite, Podemos ler todo o conteúdo de um Poderoso arquivo de script armazenado em disco e o copiou um python variável de seqüência de caracteres. Então nós chamamos método para executar todas as declarações SQL em uma chamada.
inserir / recuperar dados digitais em SQLite usando Python
- Nesta secção, dir-lhe-ei como inserir ou gravar qualquer informação digital, como um ficheiro, imagem, vídeo ou uma música como dados BLOB na tabela SQLite de python.,
- Também, saiba como podemos ler um arquivo, imagem, vídeo, música, ou quaisquer dados digitais armazenados no SQLite usando Python.
Consulte o nosso guia completo no Python SQLite BLOB para inserir e recuperar ficheiros e imagens.
criar ou redefinir funções SQLite usando Python
Python sqlite3 module fornece – nos a capacidade de criar e redefinir funções SQL dentro do Python. Eu criei um tutorial separado para cobri-lo em detalhes. Por favor, consulte Como criar e redefinir funções SQL dentro do Python.,
Consulte o nosso guia completo sobre Criar ou redefinir funções SQLite dentro do Python.
trabalhar com os tipos de data e hora SQLite em Python e vice-versa
às vezes precisamos inserir ou ler a data ou o valor da hora a partir de uma tabela SQLite. Então, se você está trabalhando com um valor de data ou timestamp, então, por favor, consulte nosso tutorial separado sobre trabalhar com valores de DateTime SQLite em Python.
excepções à base de dados SQLite
excepção sqlite3.Aviso
- uma subclasse de excepção. E podes ignorá-lo se quiseres que não impeça a execução.,
excepção sqlite3.Erro
- A classe de base das outras excepções no módulo sqlite3. É uma subclasse de exceção.
excepção sqlite3.Erro da base de dados
- excepção levantada para os erros relacionados com a base de dados.exemplos :Se você tentar abrir um arquivo como um banco de dados sqlite3 que não é um arquivo de banco de dados, você obterá sqlite3.DatabaseError: o ficheiro está encriptado ou não é uma base de dados
excepção sqlite3.IntegrityError
- subclasse de um erro de Base de dados., Você terá esta exceção quando a integridade relacional da base de dados for afetada, por exemplo, uma verificação de chave estrangeira falha.
excepção sqlite3.ProgrammingError
- It is also a subclass of DatabaseError. Esta exceção foi levantada por causa de erros de programação, por exemplo, criando uma tabela com a mesma que já existe, erro de sintaxe nas consultas SQL.
excepção sqlite3.OperationalError
- It is also a subclass of DatabaseError. Este erro não está em nosso controle. Esta exceção foi levantada para erros relacionados com a operação da base de dados.,
- Exemplos: uma desconexão acidental, servidor abaixo, um tempo-limite ocorre, as questões de fonte de dados. servidor abaixo
excepção sqlite3.NotSupportedError
- irá obter uma excepção quando a API da base de dados foi usada que não é suportada pela base de dados.
- Exemplo: invocar o método de rollback() numa ligação que não suporta a transacção. A ligar ao commit após criar o comando table.,
por isso será sempre aconselhável escrever todo o seu código de operação da base de dados no bloco de tentativa para que você possa pegar exceções em exceto bloco se houver algum e tomar as medidas corretivas contra ele.
Por exemplo, vamos tentar inserir dados em uma tabela que não existe na base de dados SQLite e imprimir a pilha de exceção completa.,
saída:
alterar o tempo-limite de ligação SQLite ao ligar-se a partir de Python
pode ser o cenário em que múltiplas ligações acedem a uma base de dados SQLite, e um dos processos que executam alguma operação de modificação de dados na base de dados, para efectuar a ligação de modificação de dados precisa de ser Bloqueado, ou seja, a base de dados SQLite está bloqueada até que a transacção seja comprometida. O parâmetro tempo-limite que especificamos ao conectar-se à base de dados Determina Quanto tempo a conexão deve esperar para que o bloqueio desapareça até criar uma exceção.,
o valor por omissão para o parâmetro tempo-limite é 5.0 (cinco segundos). Você não precisa especificá-lo durante a conexão, porque é um valor padrão. ou seja, sempre que você estiver conectando ao SQLite do Python, e você não tiver uma resposta dentro de 5 segundos, seu programa irá levantar uma exceção. Mas se estiver a enfrentar o problema do tempo-limite da ligação e quiser aumentá-lo, poderá fazê-lo usando um argumento de tempo-limite de uma função
.
deixe ver como alterar o valor de tempo-limite ao ligar o SQLite de dentro do Python.,
Saída:
Connected to SQLiteTotal rows are: (2,)The Sqlite connection is closed
Identificar o total de alterações desde que o banco de dados SQLite conexão foi aberta
Para auditoria e de estatísticas finalidade se você deseja localizar o número de linhas do banco de dados que foram alterados, inseridos ou excluídos desde que a ligação de base de dados foi aberta, você pode usar o connection.total_changes
método de Python módulo sqlite3.o método
oconnection.total_changes
devolve o número total de linhas de base de dados que foram afectadas. Vamos ver o exemplo Python para encontrar as alterações totais que foram feitas desde que a conexão de banco de dados foi aberta.,
saída:
Connected to SQLiteTotal Rows affected since the database connection was opened: 3sqlite connection is closed
Tome uma cópia de segurança da base de dados SQLite dentro do Python
Python sqlite3 módulo fornece uma função para ter uma cópia de segurança da base de dados SQLite. Usando um método pode obter a cópia de segurança da base de dados SQLite.
connection.backup(target, *, pages=0, progress=None, name="main", sleep=0.250)
Esta função recebe uma cópia de segurança da base de dados SQLite, e uma cópia será escrita no alvo do argumento, que deve ser outra instância de conexão., Por padrão, ou quando as páginas são 0 ou um inteiro negativo, a base de dados inteira é copiada em um único passo; caso contrário, o método executa um ciclo copiando até as páginas de cada vez.
o argumento do nome indica a base de dados que deseja copiar. O argumento sleep define o número de segundos para dormir entre tentativas sucessivas de backup das páginas restantes de um banco de dados. argumento de latência pode ser especificado como um inteiro ou um valor de ponto flutuante.
deixe ver o exemplo para copiar uma base de dados existente para outra.,
saída:
Nota:
- Após a ligação ao SQLite, abrimos ambas as bases de dados usando duas ligações diferentes.a seguir, executamos um método
connection.backup()
usando uma primeira instância de conexão. Além disso, especificamos o número de páginas de banco de dados a copiar em cada iteração.
Python SQLite Exercise Project
por favor, resolva o nosso exercício de programação de bases de dados Python para dominar a programação de bases de dados em Python.
Leave a Reply