<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivo para SQLite - Bóson Treinamentos em Ciência e Tecnologia</title>
	<atom:link href="https://www.bosontreinamentos.com.br/tag/sqlite/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bosontreinamentos.com.br/tag/sqlite/</link>
	<description>Artigos e Tutoriais sobre Desenvolvimento de Software, Bancos de Dados SQL, Linux, Lógica de Programação, Inteligência Artificial, Hardware, Eletrônica, Arduino, Técnicas e Teorias de Estudo e Aprendizagem, Carreira em TI, Ciências Cognitivas, e muito mais!</description>
	<lastBuildDate>Thu, 11 Jul 2024 11:41:49 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.6</generator>
	<item>
		<title>Tipos de Dados no SQLite e tipos correspondentes em Python</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 21 May 2024 13:23:06 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20077</guid>

					<description><![CDATA[<p>Tipos de Dados no SQLite e os tipos correspondentes em Python Neste artigo vamos discutir brevemente os tipos de dados disponíveis no SQLite, juntamente com os tipos de dados correspondentes no Python. O que são Tipos de Dados? Os tipos de dados representam os diferentes formatos e faixas de valores que podem ser armazenados em um banco de dados. Eles definem o tipo de informação que pode ser armazenado em uma coluna de uma tabela, e seu domínio (faixa de valores válidos). Também determinam como os dados serão armazenados em disco, como serão manipulados e quais operações podem (ou não) ser realizadas sobre eles. Os tipos em um banco de dados são importantes porque garantem a integridade dos dados e ajudam a otimizar o armazenamento e a recuperação de informações. Cada um tem suas próprias características e restrições, e é importante escolher o tipo mais apropriado para cada coluna com base no tipo de informação que será armazenada. Classificação dos tipos de dados Podemos classificar os tipos de dados em bancos de dados da seguinte forma: Tipos numéricos: Armazenam valores numéricos, como valores inteiros, números de ponto flutuante e números decimais. Tipos de caracteres: Armazenam strings de caracteres, como nomes, endereços [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/">Tipos de Dados no SQLite e tipos correspondentes em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Tipos de Dados no SQLite e os tipos correspondentes em Python</h2>
<p>Neste artigo vamos discutir brevemente os tipos de dados disponíveis no SQLite, juntamente com os tipos de dados correspondentes no Python.</p>
<h3>O que são Tipos de Dados?</h3>
<p>Os <a href="https://www.bosontreinamentos.com.br/programacao-em-python/5-python-variaveis-tipos-de-dados-e-o-comando-type/">tipos de dados</a> representam os diferentes formatos e faixas de valores que podem ser armazenados em um banco de dados. Eles definem o tipo de informação que pode ser armazenado em uma coluna de uma tabela, e seu domínio (faixa de valores válidos).</p>
<p>Também determinam como os dados serão armazenados em disco, como serão manipulados e quais operações podem (ou não) ser realizadas sobre eles.</p>
<p>Os tipos em um banco de dados são importantes porque garantem a integridade dos dados e ajudam a otimizar o armazenamento e a recuperação de informações. Cada um tem suas próprias características e restrições, e é importante escolher o tipo mais apropriado para cada coluna com base no tipo de informação que será armazenada.</p>
<h3>Classificação dos tipos de dados</h3>
<p>Podemos classificar os tipos de dados em bancos de dados da seguinte forma:</p>
<ul>
<li>Tipos numéricos: Armazenam valores numéricos, como valores inteiros, números de ponto flutuante e números decimais.</li>
<li>Tipos de caracteres: Armazenam strings de caracteres, como nomes, endereços e descrições. Podem incluir tipos de caracteres fixos (char) e variáveis (varchar).</li>
<li>Tipos de data e hora: Armazenam datas, horas ou data e hora combinadas. Isso pode incluir tipos como DATE, TIME, DATETIME e TIMESTAMP.</li>
<li>Tipos booleanos: Armazenam valores booleanos, como verdadeiro (true) ou falso (false).</li>
<li>Tipos de sequência: Armazenam sequências de bytes, como imagens, arquivos de áudio ou arquivos binários.</li>
<li>Tipos de coleção: Permitem armazenar coleções de valores, como listas, conjuntos e dicionários.</li>
<li>Tipos especiais: Alguns bancos de dados oferecem tipos de dados especiais para armazenar dados geoespaciais, JSON, endereços de rede, XML, etc.</li>
</ul>
<p>Vejamos agora como são classificados os tipos de dados no SQLite.</p>
<h3>Classe de Armazenamento em SQLite</h3>
<p>Uma classe de armazenamento é, basicamente, uma <em>coleção</em> de tipos de dados similares, como tipos inteiros, de ponto flutuante ou de strings. Em SQLite existem as seguintes cinco classes de armazenamento (tipos de dados) disponíveis:</p>
<table style="border-collapse: collapse; width: 86.657%; height: 83px;" border="1">
<tbody>
<tr>
<th style="width: 39.2887%; text-align: center;"><strong>Classe de Armazenamento</strong></th>
<th style="width: 60.7113%; text-align: center;"><strong>Valores Armazenados (Domínio)</strong></th>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">NULL</td>
<td style="width: 60.7113%; text-align: center;">Valor nulo (NULL) ou ausente</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">INTEGER</td>
<td style="width: 60.7113%; text-align: center;">Números inteiros com sinal, com até 8 bytes de tamanho. Também para data e hora no formato de tempo Unix (número de segundos decorridos desde 01/01/1970 00:00:00 UTC).</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">REAL</td>
<td style="width: 60.7113%; text-align: center;">Valores de ponto flutuante de precisão dupla, no padrão IEEE com 8 bytes de comprimento</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">TEXT</td>
<td style="width: 60.7113%; text-align: center;">Strings de texto de comprimento variável, codificadas em UTF-8, UTF-16BE ou UTF-16LE. Também empregado para armazenar dados de data e hora, no formato de strings no padrão ISO 8601.</td>
</tr>
<tr>
<td style="width: 39.2887%; text-align: center;">BLOB</td>
<td style="width: 60.7113%; text-align: center;">Dados armazenados exatamente como inseridos, geralmente em formato binário, como imagens, arquivos, etc.</td>
</tr>
</tbody>
</table>
<h4>E o tipo booleano (lógico)?</h4>
<p>O SQLite não possui uma classe de armazenamento separada para dados booleanos. Em vez disso, valores booleanos são armazenados na forma de números inteiros 0 (equivalente a falso) e 1 (equivalente a verdadeiro).</p>
<p>O sistema também reconhece as palavras-chave &#8220;TRUE&#8221; e &#8220;FALSE&#8221;, a partir da versão 3.23.0, sendo, na verdade, apenas grafias alternativas para os literais inteiros 1 e 0, respectivamente.</p>
<p>Na tabela a seguir comparamos os tipos de dados em SQLite e seus tipos correspondentes em Python:</p>
<table style="border-collapse: collapse; width: 86.5845%; height: 106px;" border="1">
<tbody>
<tr>
<th style="width: 49.9162%; text-align: center;"><strong>Classe de Armazenamento SQLite</strong></th>
<th style="width: 50.0838%; text-align: center;"><strong>Tipo de Dado (Classe) em Python</strong></th>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">NULL</td>
<td style="width: 50.0838%; text-align: center;">NoneType</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">INTEGER</td>
<td style="width: 50.0838%; text-align: center;">int</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">REAL</td>
<td style="width: 50.0838%; text-align: center;">float</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">TEXT</td>
<td style="width: 50.0838%; text-align: center;">str</td>
</tr>
<tr>
<td style="width: 49.9162%; text-align: center;">BLOB</td>
<td style="width: 50.0838%; text-align: center;">bytes</td>
</tr>
</tbody>
</table>
<p>É importante lembrar que o SQLite é um banco de dados de tipagem <em>dinâmica</em>, ou ainda <a href="https://www.sqlite.org/flextypegood.html">tipagem <em>flexível</em></a>, o que significa que ele é flexível em relação aos tipos de dados e pode converter automaticamente entre tipos, se for necessário, em vez de usar tipos rígidos por padrão (que também estão disponíveis). Mas o que significa isso? Significa que:</p>
<p><em>No SQLite, o tipo de dados de um valor está associado ao próprio valor, não ao seu contêiner (no caso, uma coluna de tabela).</em></p>
<p>Além disso, o sistema de tipos dinâmicos do SQLite é compatível com versões anteriores dos sistemas de tipos estáticos mais comuns de outros mecanismos de banco de dados, no sentido de que as instruções SQL que funcionam em bancos de dados de tipo estaticamente funcionam da mesma maneira no SQLite.</p>
<h3>O tipo de dados ANY</h3>
<p>Quando o tipo de dados de uma coluna é &#8220;<strong>ANY</strong>&#8220;, significa que qualquer tipo de dados &#8211; números inteiros, de ponto flutuante, strings ou blobs binários &#8211; pode ser inserido nessa tabela e seu valor e tipo de dados serão preservados exatamente como foram inseridos. Atualmente, o SQLite é o único mecanismo de banco de dados SQL que suporta esse recurso.</p>
<p>O comportamento de ANY é ligeiramente diferente em uma tabela STRICT (de tipagem rígida) e em uma tabela comum. Em uma tabela STRICT, uma coluna do tipo ANY sempre preserva os dados exatamente como eles são recebidos. Já em uma tabela comum não estrita, uma coluna do tipo ANY tentará converter strings que se parecem com números em um valor numérico e, se não ocorrerem erros, armazenará o valor numérico em vez da string original.</p>
<h3>O que é Afinidade de Tipos</h3>
<p><em><strong>Afinidade de Tipos</strong></em> é um conceito no SQLite de como são associados os tipos de dados de colunas a uma das cinco categorias de tipos que ele suporta internamente, explicadas acima.</p>
<p>Apesar do SQLite ser um banco de dados de tipo dinâmico e permitir a inserção de qualquer tipo de dado em qualquer coluna, ele ainda possui esse sistema de afinidade de tipos que ajuda a interpretar e armazenar os dados de maneira eficiente e consistente.</p>
<p>Para isso algumas regras são definidas, descritas na sequência.</p>
<h4>Regras de Afinidade de Tipos no SQLite</h4>
<p>Quando uma tabela é criada no SQLite e especificamos os tipos de dados para as colunas, são aplicadas regras de afinidade de tipos para determinar a categoria interna mais adequada. Essas regras são baseadas nos nomes dos tipos de dados fornecidos.</p>
<p>Vejamos algumas regras gerais.</p>
<ul>
<li>INTEGER: Qualquer coluna com &#8220;INT&#8221; no tipo terá afinidade INTEGER.</li>
<li>TEXT: Qualquer coluna com &#8220;CHAR&#8221;, &#8220;VARCHAR&#8221;, &#8220;CLOB&#8221;, ou &#8220;TEXT&#8221; no tipo terá afinidade TEXT.</li>
<li>BLOB: Qualquer coluna com o tipo &#8220;BLOB&#8221; terá afinidade BLOB.</li>
<li>REAL: Qualquer coluna com &#8220;REAL&#8221;, &#8220;FLOAT&#8221;, ou &#8220;DOUBLE&#8221; no tipo terá afinidade REAL.</li>
<li>NUMERIC: Qualquer coluna que não se encaixe nas regras acima terá afinidade NUMERIC.</li>
</ul>
<p>Ao inserir dados em uma coluna, o SQLite tentará converter o valor para o tipo de afinidade da coluna.</p>
<p>Para saber mais e se aprofundar em tipos de dados no SQLite, visite a página da documentação oficial: <a href="https://www.sqlite.org/datatype3.html">Tipos de Dados no SQLite</a>.</p>
<h3>Colabore com a Bóson Treinamentos</h3>
<p>Ajude o canal adquirindo meus cursos na Udemy:</p>
<ul>
<li>Bancos de Dados com MySQL Básico: <a href="https://bit.ly/35QdWE4" target="_blank" rel="noopener">https://bit.ly/35QdWE4</a></li>
<li>Lógica de Programação com Português Estruturado: <a href="https://bit.ly/3QKPn22" target="_blank" rel="noopener">https://bit.ly/3QKPn22</a></li>
<li>Programação em Python do Zero: <a href="https://bit.ly/python-boson" target="_blank" rel="noopener">https://bit.ly/python-boson</a></li>
</ul>
<p>Adquira também livros e outros itens na loja da Bóson Treinamentos na Amazon e ajude o canal a se manter e crescer: <a href="https://www.amazon.com.br/shop/bosontreinamentos" target="_blank" rel="noopener">https://www.amazon.com.br/shop/bosontreinamentos</a></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/">Tipos de Dados no SQLite e tipos correspondentes em Python</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/tipos-de-dados-no-sqlite-e-tipos-correspondentes-em-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Criar banco de dados SQLite em Python com sqlite3</title>
		<link>https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/</link>
					<comments>https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Fábio dos Reis]]></dc:creator>
		<pubDate>Tue, 09 Apr 2024 11:52:41 +0000</pubDate>
				<category><![CDATA[Programação em Python]]></category>
		<category><![CDATA[Bancos de Dados]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLite]]></category>
		<guid isPermaLink="false">https://www.bosontreinamentos.com.br/?p=20029</guid>

					<description><![CDATA[<p>Criar banco de dados SQLite em Python com sqlite3 Neste tutorial veremos como criar um banco de dados usando o SGBD SQLite e como acessá-lo para realizar tarefas variadas a partir de um script em Python. Para tal, faremos uso da biblioteca built-in sqlite3, explorando sua funcionalidade básica na criação e acesso a dados armazenados em um banco de dados. Primeiramente, vamos conceituar o que é o SQLite. O que é o SQLite O SQLite é uma biblioteca de software que fornece um sistema de gerenciamento de bancos de dados relacional (SGBDR). Trata-se de uma biblioteca muito leve (daí o termo &#8220;lite&#8220;) em termos de configuração, administração do BD e recursos necessários. Presente em todos os smartphones e na maioria dos computadores e outros equipamentos, é software livre e de código aberto. Site oficial: https://www.sqlite.org/ Características principais do SQLite Autocontido: O SQLite é independente, o que significa que requer suporte mínimo do sistema operacional ou biblioteca externa. Isso o torna utilizável em qualquer ambiente, especialmente em dispositivos incorporados como iPhones, telefones Android, consoles de jogos, reprodutores de mídia portáteis, etc. É desenvolvido usando ANSI-C. O código-fonte está disponível nos arquivos sqlite3.c e seu arquivo de cabeçalho sqlite3.h. Se precisarmos desenvolver [...]</p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/">Criar banco de dados SQLite em Python com sqlite3</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Criar banco de dados SQLite em Python com sqlite3</h2>
<p>Neste tutorial veremos como criar um banco de dados usando o SGBD SQLite e como acessá-lo para realizar tarefas variadas a partir de um script em Python. Para tal, faremos uso da biblioteca built-in sqlite3, explorando sua funcionalidade básica na criação e acesso a dados armazenados em um banco de dados.</p>
<p>Primeiramente, vamos conceituar o que é o SQLite.</p>
<h3>O que é o SQLite</h3>
<p><span style="font-weight: 400;">O SQLite é uma biblioteca de software que fornece um sistema de gerenciamento de bancos de dados relacional (SGBDR). Trata-se de uma biblioteca muito leve (daí o termo &#8220;<em>lite</em>&#8220;) em termos de configuração, administração do BD e recursos necessários.</span></p>
<p>Presente em todos os smartphones e na maioria dos computadores e outros equipamentos, é software livre e de código aberto.</p>
<p>Site oficial: <a href="https://www.sqlite.org/">https://www.sqlite.org/</a></p>
<h4><strong>Características principais do SQLite</strong></h4>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Autocontido</strong>: O SQLite é independente, o que significa que requer suporte mínimo do sistema operacional ou biblioteca externa. Isso o torna utilizável em qualquer ambiente, especialmente em dispositivos incorporados como iPhones, telefones Android, consoles de jogos, reprodutores de mídia portáteis, etc.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">É desenvolvido usando <a href="https://www.bosontreinamentos.com.br/category/programacao-em-linguagem-c/">ANSI-C</a>. O código-fonte está disponível nos arquivos sqlite3.c e seu arquivo de cabeçalho sqlite3.h. Se precisarmos desenvolver uma aplicação que utilize SQLite, basta colocar esses arquivos no projeto e compilá-lo com seu código.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Sem servidor (serverless)</strong>: Normalmente, um SGBDR como <a href="https://www.bosontreinamentos.com.br/curso-completo-de-mysql/">MySQL</a>, <a href="https://www.bosontreinamentos.com.br/curso-completo-de-postgresql/">PostgreSQL</a>, etc., requer um processo de servidor separado para operar. As aplicações que desejam acessar o servidor de banco de dados utilizam o protocolo <a href="https://www.bosontreinamentos.com.br/redes-computadores/curso-de-redes-protocolo-tcp-transmission-control-protocol/">TCP/IP</a> para enviar e receber solicitações. Isso é chamado de </span><i><span style="font-weight: 400;">arquitetura cliente/servidor</span></i><span style="font-weight: 400;">.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Já o SQLite NÃO requer um servidor para funcionar.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">O banco de dados SQLite é integrado à aplicação que acessa o banco de dados. Os aplicativos interagem com o banco de dados SQLite lendo e escrevendo diretamente dos arquivos do banco de dados armazenados no disco.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Configuração zero</strong>: Devido à arquitetura serverless, não precisamos “instalar” o SQLite antes de usá-lo. Não há nenhum processo do servidor que precise ser configurado, iniciado e interrompido.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Além disso, o SQLite não usa nenhum arquivo de configuração específico.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;"><strong>Transacional</strong>: Todas as <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-uma-transacao/">transações</a> no SQLite são totalmente compatíveis com as <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-significa-acid/">propriedades ACID</a>. Isso significa que todas as consultas e alterações são atômicas, consistentes, isoladas e duráveis.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Em outras palavras, todas as alterações em uma transação ocorrem completamente ou não ocorrem, mesmo quando ocorre uma situação inesperada, como falha de aplicativo, falha de energia ou falha do sistema operacional.</span></li>
</ul>
<p><span style="font-weight: 400;">O SQLite também tem suporte a subconsultas, transações, junções, pesquisa em texto (full text search), restrições de chave estrangeira, entre outras funcionalidades.</span></p>
<h4><b>Outros Recursos do SQLite</b></h4>
<ul>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">O SQLite usa tipos dinâmicos para tabelas. Isso significa podemos armazenar qualquer valor em qualquer coluna, independentemente do tipo de dados.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Permite que uma única conexão de banco de dados acesse vários arquivos de banco de dados simultaneamente. Isso fornece muitos recursos interessantes, como unir tabelas em bancos de dados diferentes ou copiar dados entre bancos de dados em um único comando.</span></li>
<li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">O SQLite é capaz de criar bancos de dados na memória de acesso muito rápido.</span></li>
</ul>
<h4><b>Observações sobre o SQLite</b></h4>
<p><span style="font-weight: 400;">É importante notar que, por não ter um servidor para seu gerenciamento, o SQLite não provê um acesso direto pela rede. As soluções existentes para acesso remoto são no geral &#8220;caras&#8221; e ineficientes.</span></p>
<p><span style="font-weight: 400;">Além disso, o SQLite não possui suporte à autenticação, com usuários e permissões definidas. Estamos falando aqui sobre <a href="https://www.bosontreinamentos.com.br/mysql/curso-de-mysql-grant-e-revoke-definindo-privilegios-de-acesso-aos-bancos-de-dados/">usuários do banco de dados</a>, que têm permissão para criar tabela, inserir registros etc.</span></p>
<p><span style="font-weight: 400;">Porém, apesar do SQLite não ter suporte à autenticação, é claro que podemos e devemos implementar nosso próprio controle de acesso para nossa aplicação.</span></p>
<p>Finalmente, O SQLite é <em>case-insensitive</em>, ou seja, <strong>não</strong> diferencia letras maiúsculas de minúsculas.</p>
<h4><b>Ferramentas GUI para gerenciamento do SQLite</b></h4>
<p>Diversas ferramentas gráficas existem para auxiliar no gerenciamento de bancos de dados criados com SQLite, disponíveis em várias plataformas e sob vários tipos de licenciamento. Algumas das mais populares incluem o SQLiteStudio, DBeaver e o DB Browser for SQLite, citadas a seguir:</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>SQLiteStudio</strong><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">O SQLiteStudio é uma ferramenta GUI gratuita para gerenciar bancos de dados SQLite.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">É gratuito, portátil, intuitivo e multiplataforma.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">A ferramenta também fornece alguns dos recursos mais importantes para trabalhar com bancos de dados SQLite, como importação e exportação de dados em vários formatos, incluindo <a href="https://www.bosontreinamentos.com.br/mysql/como-carregar-um-arquivo-csv-em-tabela-no-mysql/">CSV</a>, XML e JSON.<br />
</span>Download: <a href="https://github.com/pawelsalawa/sqlitestudio/releases">https://github.com/pawelsalawa/sqlitestudio/releases</a></li>
</ul>
<p><span style="font-weight: 400;">Além do SQLite Studio, também temos disponíveis as seguintes ferramentas GUI gratuitas para SQLite: </span></p>
<ul>
<li><span style="font-weight: 400;"><strong>DBeaver</strong>: Ferramenta gratuita de banco de dados multiplataforma. Suporta todos os principais sistemas de banco de dados relacionais populares como <a href="https://www.bosontreinamentos.com.br/curso-completo-de-mysql/">MySQL</a>, <a href="https://www.bosontreinamentos.com.br/curso-completo-de-postgresql/">PostgreSQL</a>, <a href="https://www.bosontreinamentos.com.br/category/oracle-database/">Oracle Database</a>, IBM DB2, <a href="https://www.bosontreinamentos.com.br/curso-de-microsoft-sql-server/">Microsoft SQL Server</a>, Sybase, Firebird, além é claro do SQLite.<br />
Download: <a href="https://dbeaver.io/download/" target="_blank" rel="noopener">https://dbeaver.io/download/</a></span></li>
<li><span style="font-weight: 400;"><strong>DB Browser for SQLite</strong>: Ferramenta de código aberto para gerenciar arquivos de banco de dados compatíveis com SQLite.</span><span style="font-weight: 400;"><br />
</span><span style="font-weight: 400;">Download: </span><a href="https://sqlitebrowser.org/"><span style="font-weight: 400;">https://sqlitebrowser.org/</span></a></li>
</ul>
<h3>Módulo sqlite3</h3>
<p>O <a href="https://docs.python.org/3/library/sqlite3.html" target="_blank" rel="noopener">módulo SQLite3</a> é uma biblioteca embutida em Python, compatível com a especificação DB-API 2.0 (descrita pelo <a href="https://peps.python.org/pep-0249/">PEP 249</a>), que permite a interação com bancos de dados SQLite. Esse módulo fornece uma API simples mas bastante eficaz para realizar operações variadas de consulta, atualização e gerenciamento em bancos de dados SQLite diretamente a partir de scripts Python.</p>
<p>O SQLite3 é amplamente utilizado devido à sua natureza leve, rápida e autônoma. Ele não requer um servidor separado para funcionar, pois todo o banco de dados é armazenado em um único arquivo, o que facilita a distribuição e o compartilhamento de aplicativos.</p>
<p>Além disso, essa biblioteca suporta a maioria das funcionalidades comuns de <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/o-que-e-um-banco-de-dados-relacional/">bancos de dados relacionais</a>, incluindo tipos de dados, consultas SQL complexas, <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-significa-acid/">transações ACID</a> (Atomicidade, Consistência, Isolamento e Durabilidade) e outras. Fornece classes e métodos para executar consultas SQL, inserir dados, atualizar registros, excluir dados, gerenciar transações e manipular exceções de maneira eficiente.</p>
<p>Apesar de não ser necessário instalá-lo (por se tratar de um módulo built-in), o módulo sqlite3 requer a versão SQLite 3.7.15 ou mais recente para funcionar.</p>
<h3>Como criar um banco de dados SQLite com sqlite3</h3>
<p>Para criar um novo banco de dados, ou abrir um banco de dados já existente, o primeiro passo é importar a biblioteca sqlite3 com a declaração import no script Python:</p>
<pre>import sqlite3 as s</pre>
<p>Logo após, criamos / conectamos um banco de dados usando o método connect() do sqlite3 para criar um objeto de conexão:</p>
<pre><strong>conexao = s.connect(banco_teste.db')</strong></pre>
<p>Nesta instrução, passamos o nome do banco entre aspas como argumento para o método connect, atribuindo seu retorno a uma variável objeto que batizamos aqui de <strong>conexao</strong>. Caso o banco de dados não exista, será criado no mesmo diretório onde reside o script python; se já existir, o banco será aberto para acesso. Usaremos o nome banco_teste como nome do banco de dados, com a extensão <strong>.db</strong>.</p>
<p>Na sequência, criaremos um cursor que nos permitirá executar as declarações SQL no banco de dados em si, como comandos para criar tabelas, inserir registros, atualizar linha e excluir elementos, entre outros. Para isso usamos o método <em>cursor()</em> do objeto <strong>conexao</strong> criado:</p>
<pre>cursor = conexao.cursor()</pre>
<p>Agora podemos escrever uma declaração SQL a ser executada no banco. Por exemplo, vamos criar uma tabela usando a declaração CREATE TABLE, e então executar essa declaraçãop no banco de dados usando o método execute() do cursor criado:</p>
<pre>sql = "CREATE TABLE teste(coluna1, coluna2, coluna3);"
cursor.execute(sql)</pre>
<p>Como estamos executando um comando que realiza alterações no banco de dados, precisamos efetuar um commit logo após para efetivar a <a href="https://www.bosontreinamentos.com.br/bancos-de-dados/conceitos-de-bancos-de-dados-o-que-e-uma-transacao/">transação</a>, caso contrário as alterações requisitadas não serão tornadas permanentes no arquivo do banco. Para isso, executamos o método commit() da conexão:</p>
<pre>conexao.commit()</pre>
<p>Finalmente, verificamos se a tabela foi criada efetuando uma consulta na tabela mestra do sqlite, que se chama sqlite-master. Usamos na sequência o método fetchall() para acessar todos os registros retornados pela consulta a um objeto batizado de res ( de &#8220;resultado&#8221;):</p>
<pre>res = cursor.execute("SELECT name FROM sqlite_master")
print(res.fetchall())</pre>
<p><strong>Código completo:</strong></p>
<pre><span style="color: #ff0000;"><strong>import sqlite3 as s

</strong></span><span style="color: #339966;"><strong># Criar objeto de conexão e conectar ao banco</strong></span>
<span style="color: #ff0000;"><strong>conexao = s.connect('banco_teste.db')

</strong></span><span style="color: #339966;"><strong># Criar cursor</strong></span>
<span style="color: #ff0000;"><strong>cursor = conexao.cursor()

</strong></span><span style="color: #339966;"><strong># Determinar declarações SQL a serem executadas e executá-las no banco</strong></span>
<span style="color: #ff0000;"><strong>sql = "CREATE TABLE teste(coluna1, coluna2, coluna3);"</strong></span>
<span style="color: #ff0000;"><strong>cursor.execute(sql)

</strong></span><span style="color: #339966;"><strong># Efetivar a transação (comitar)</strong></span>
<span style="color: #ff0000;"><strong>conexao.commit()

</strong></span><span style="color: #339966;"><strong># Verificar se tabelas foram criadas</strong></span>
<span style="color: #ff0000;"><strong>res = cursor.execute("SELECT name FROM sqlite_master")</strong></span>
<span style="color: #ff0000;"><strong>print(res.fetchall())</strong></span></pre>
<p><em><strong>Resultado:</strong></em></p>
<pre><span style="color: #000000;"><strong>[('teste',)]</strong></span></pre>
<p>Note que foi retornada uma lista de tuplas, com um único elemento, que representa o nome da tabela de teste criada.</p>
<p>É isso aí! Criamos um banco de dados com SQLite e <a href="https://www.bosontreinamentos.com.br/programacao-com-python/">Python</a>, além de uma tabela simples, e testamos a existência da tabela por meio de instruções no script. Na próxima lição veremos como inserir dados nesta tabela (criar registros) e testar essa inserção.</p>
<p>Case prefira, assista a um vídeo da Bóson Treinamentos sobre Python com SQLite:</p>
<p><iframe title="YouTube video player" src="https://www.youtube.com/embed/GZGPf1LrLdg?si=Tv3xzcZlCPty3cYZ" width="560" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>O post <a href="https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/">Criar banco de dados SQLite em Python com sqlite3</a> apareceu primeiro em <a href="https://www.bosontreinamentos.com.br">Bóson Treinamentos em Ciência e Tecnologia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.bosontreinamentos.com.br/programacao-em-python/criar-banco-de-dados-sqlite-em-python-com-sqlite3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
