голосование
PHP
Javascript
BASH
Firebird
HTML
Программы
Хостинг
Ресурсы
GIT
SEO
Oracle
Python
Майнинг
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как создать базу sqlite Python

Как создать базу данных sqlite при помощи модуля sqlite Python. Мне пришлось познакомиться с этой базой совсем недавно. Скажу так, что я её недооценивал и зря. Она обладает неплохим набором возможностей. Вы сможете хранить данные с разными типами:

  • NULL. Пустое значение в таблице базы.
  • INTEGER. Целочисленное значение, хранящееся в 1, 2, 3, 4, 6 или 8 байтах, в зависимости от величины самого значения.
  • REAL. Числовое значение с плавающей точкой. Хранится в формате 8-байтного числа IEEE с плавающей точкой.
  • TEXT. Значение строки текста. Хранится с использованием кодировки базы данных (UTF-8, UTF-16BE или UTF-16LE)
  • BLOB. Значение бинарных данных, хранящихся точно в том же виде, в каком были введены.

Вы не сможете использовать эту базу для сайтов с большой посещаемостью. В случае приличной нагрузки база может заблокироваться и транзакции на будут проходить. У этой базы есть один большой плюс. Она легко разворачивается. Вам нужно подключить питоновский модуль sqlite3 и подключится к файлу. Если файла базы данных нет, то он будет создан согласно указанному пути. Эта база подходит для простых скриптов. У питона есть базы подобные sqlite, но там не просто просмотреть содержимое таблиц. Если вы используете Linux, то существуют менеджеры для работы с базой данных sqlite. В них удобно просматривать записи в таблицах.

Давайте подключим модуль sqlite и создадим базу database.db. Если у вас нет модуля sqlite, то воспользуйтесь pip. Более подробно о работе pip написано на странице Как загружать библиотеки с pip Python.


#установка модуля
pip install sqlite3

Если у вас нет файла database.db, то функция connect() создаст его. Не создавайте файл руками (touch database.db). Вся база данных находится в одном файле. Этот файл легко добавить в коммит git. Можете поставить исключение в .gitignore и изменения в базе не будет фиксировать git. Функция cursor() создает объект для выполнения sql команд. Через этот объект осуществляется как выборка, так и запись таблиц. Функция executescript() позволяет запустить большой скрипт для создания таблиц в базе. Вы можете не только создать таблицы, но и наполнить их своими записями. В конце необходимо зафиксировать изменения при помощи функции commit(). Всегда выполняйте эту функцию для фиксирования изменений.


#!/usr/bin/python3

import sqlite3
import os


name_db = 'database.db'
cur_dir = os.getcwd()
path_db = os.path.join(cur_dir, name_db)

# проверка на существование базы данных
if not os.path.exists(path_db):
	try:
		#создание базы данных + создание таблиц
		conn = sqlite3.connect(path_db)
		# если не сработает, то sudo chmod 777 ./database.db
		# os.popen('sudo chmod 777 ' + path_db).read()
		cursor = conn.cursor()

		#создание таблиц + наполнение
		cursor.executescript("""
			BEGIN TRANSACTION;
			CREATE TABLE "user" (
				`id`    INTEGER PRIMARY KEY AUTOINCREMENT,
				`name`    TEXT,
				`id_lang`    INTEGER,
				`changed`    TEXT
			);

			INSERT INTO `user`  (name, id_lang, changed)  
			VALUES('Егор',1, DATETIME('now'));
			INSERT INTO `user`  (name, id_lang, changed)  
			VALUES('Иван',2, DATETIME('now'));

			CREATE TABLE "lang" (
				`id`    INTEGER PRIMARY KEY AUTOINCREMENT,
				`name`    TEXT,
				`changed`    TEXT
			);

			INSERT INTO `lang`  (name, changed)  
			VALUES('python',DATETIME('now'));
			INSERT INTO `lang`  (name, changed)  
			VALUES('ruby',DATETIME('now'));

			COMMIT;
		""")

		# фиксирую коммит
		conn.commit()
            
	except sqlite3.Error as e:            
		print('Ошибка БД: ' + str(e))
		

Обратите внимание на то, что функция DATETIME('now') генерирует текущее время. Я не проставляю ID вручную, потому что это поле PRIMARY KEY AUTOINCREMENT. Оно увеличивается само на единицу.

Если у вас возникнет ошибка при создании базы данных sqlite, то сработает перехват ошибок. Функция print() выведет в консоли название ошибки на английском языке.

Теперь давайте проверим наличие и содержимое базы данных sqlite. Если вы работаете в линукс то открывайте консоль. Проберитесь в папку с базой данных sqlite и подключитесь к базе данных. Далее можете вводить команды. Прилагаю таблицу основных команд:

командаописание
.showПоказывает текущие настройки заданных параметров
.databasesПоказывает название баз данных и файлов
.quitВыход из sqlite3
.tablesПоказывает текущие таблицы
.schemaОтражает структуру таблицы
.headerОтобразить или скрыть шапку таблицы
.modeВыбор режима отображения данных таблицы
.dumpСделать копию базы данных в текстовом формате

#подключение к базе данных
sqlite3 database.db
# у вас должен поменяться курсор на sqlite>

# вывод названий баз данных и файлов
.databases

# вывод:
#seq  name             file
#---  ---------------  ----------------------------------------------------------
#0    main             /.../python/module/sqlite/database.

У нас должно быть 2 таблицы lang, user. Давайте осмотрим результат.


#подключение к базе данных
sqlite3 database.db
# у вас должен поменяться курсор на sqlite>

#просмотр схем всех таблиц
.schema

# вывод:
#CREATE TABLE "lang" (
#                                `id`    INTEGER PRIMARY KEY AUTOINCREMENT,
#                                `name`    TEXT,
#                                `changed`    TEXT
#                        );
#CREATE TABLE "user" (
#                                `id`    INTEGER PRIMARY KEY AUTOINCREMENT,
#                                `name`    TEXT,
#                                `id_lang`    INTEGER,
#                                `changed`    TEXT
#                        );

Выводим записи таблицы user и lang


#подключение к базе данных
sqlite3 database.db
# у вас должен поменяться курсор на sqlite>

# выборка всех столбцов из таблицы
select * from user;

#вывод:
#1|Егор|1|2017-10-24 11:15:30
#2|Иван|2|2017-10-24 11:15:30

# выборка всех столбцов из таблицы
select * from lang;

#вывод:
#1|python|2017-10-24 11:15:30
#2|ruby|2017-10-24 11:15:30

Создадим еще одну таблицу comment средствами bash.


#подключение к базе данных
sqlite3 database.db
# у вас должен поменяться курсор на sqlite>

CREATE TABLE "comment" (
				`id`    INTEGER PRIMARY KEY AUTOINCREMENT,
				`test`    TEXT,
				`id_user`    INTEGER,
				`changed`    TEXT
			);
# точка с запятой на конце sql обязательна

# проверяем созданную таблицу comment
.table

#вывод:
comment

# схема таблицы
.schema comment

#вывод:
#CREATE TABLE "comment" (
#`id`    INTEGER PRIMARY KEY AUTOINCREMENT,
#`text`    TEXT,
#`id_user`    INTEGER,
#`changed`    TEXT);

Наполним таблицу comment


#подключение к базе данных
sqlite3 database.db
# у вас должен поменяться курсор на sqlite>

/* добавляем комментарии */
INSERT INTO comment ( text, id_user, changed )
VALUES ( 'комментарий от Егора', 1,  DATETIME('now'));

Сменим настройки для удобного вывода данных.


#подключение к базе данных
sqlite3 database.db
# у вас должен поменяться курсор на sqlite>

# показать настройки
.show

#вывод:
#     echo: off
#  explain: off
#  headers: on
#     mode: column
#nullvalue: ""
#   output: stdout
#separator: "|"
#    width:

# показываем название столбцов
.headers ON

# показываем данные без разделителя. Разделителем становится отступ.
.mode columns

Выведем все записи таблицы comment


#подключение к базе данных
sqlite3 database.db
# у вас должен поменяться курсор на sqlite>

# выборка всех столбцов из таблицы
select * from comment;

#вывод:
#id          text                                    id_user     changed
#----------  --------------------------------------  ----------  -------------------
#1           комментарий от Егора  1           2017-10-24 09:49:13

В этой статье мы создали таблицу средствами python наполнили её данными через консоль bash.

просмотры: 943, уровень: лёгкий уровень, рейтинг: 5, дата: 2017-10-23 14:28:44
проголосовать:

Комментарии:






поиск
сайты друзей
банеры
домен RU всего за 99 рублей
http://www.2domains.ru домен RU домен RU всего за 99 рублей
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.