Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Метаданные в SQLite

13 апреля 2016 г. Archy Просмотров: 19150 RSS 1
SQLite , , , ,

Метаданные в SQLite

Метаданные – это информация о данных в базе данных. Метаданные в SQLite содержат в себе информацию о таблицах и столбцах, в которых мы храним данные. Количество строк под воздействием оператора SQL – это метаданные. Количество строк и столбцов, возвращаемые в результирующий набор, также относятся к метаданным. Метаданные в SQLite могут быть получены с использованием команды PRAGMA. Объекты SQLite могут иметь атрибуты, которые являются метаданными. Наконец, мы также можем достать определённые метаданные от запроса таблицы sqlite_master системы SQLite.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
con = lite.connect('test.db')
 
with con:
    cur = con.cursor()    
    cur.execute('PRAGMA table_info(Cars)')
    data = cur.fetchall()
    
    for d in data:
        print d[0], d[1], d[2]

В этом примере, мы пускаем в обращение команду PRAGMA table_info(tableName), чтобы получить некоторую метаинформацию о нашей таблице Cars.

Скачать новые программы для операционной системы Android. Новые платные приложения и игры X-Core: Galactic Plague всегда новые версии. Новый источник получения чистых приложений.

cur.execute('PRAGMA table_info(Cars)')

Команда PRAGMA table_info(tableName) возвращает одну строку для каждого столбца в таблице Cars. Столбцы в результирующем наборе содержат в себе порядковый номер столбца, название столбца, тип данных, может ли столбец быть NULL или нет, а также значение по умолчанию для столбца.

for d in data:
    print d[0], d[1], d[2]

Из предоставленной информации, мы печатаем порядковый номер столбца, название столбца и тип данных столбца.

$ ./colnames1.py
0 Id INT
1 Name TEXT
2 Price INT

Выходная информация примера

Далее мы напечатаем все строки из таблицы Cars с именами столбцов.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
con = lite.connect('test.db')
 
with con:
    cur = con.cursor()    
    cur.execute('SELECT * FROM Cars')
    
    col_names = [cn[0] for cn in cur.description]
    rows = cur.fetchall()
    print "%s %-10s %s" % (col_names[0], col_names[1], col_names[2])
 
    for row in rows:    
        print "%2s %-10s %s" % row

Мы печатаем содержание таблицы Cars в консоль. Теперь, мы также включаем имена столбцов. Записи выравниваются с именами столбцов.

col_names = [cn[0] for cn in cur.description]

Мы получаем имена столбцов из свойства description объекта указателя.

print "%s %-10s %s" % (col_names[0], col_names[1], col_names[2])

Эта строка печатает три имени столбцов таблицы Cars.

for row in rows:    
    print "%2s %-10s %s" % row

Мы печатаем строки, используя цикл for. Данные выравниваются с именами столбцов.

$ ./colnames2.py
Id Name       Price
 1 Audi       52642
 2 Mercedes   57127
 3 Skoda      9000
 4 Volvo      29000
 5 Bentley    350000
 6 Citroen    21000
 7 Hummer     41400
 8 Volkswagen 21600

Выходная информация

В нашем последнем примере, связанном с метаданными, мы перечислим все таблицы в базе данных test.db.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
con = lite.connect('test.db')
 
with con:
    cur = con.cursor()    
    cur.execute("SELECT name FROM sqlite_master WHERE type='table'")
 
    rows = cur.fetchall()
 
    for row in rows:
        print row[0]

Пример кода печатает все доступные в текущей базе данных таблицы в терминал.

cur.execute("SELECT name FROM sqlite_master WHERE type='table'")

Имена таблиц хранятся внутри таблицы sqlite_master системы.

$ ./listtables.py
Images
sqlite_sequence
Salaries
Cars

Это были таблицы в моей системе.

Комментариев: 1
  1. Оплатить персональный перевод в интернете не так то просто, между тем, фактически возможно. Работая удаленно, к примеру, фрилансером, различные работодателиЕсть огромнейшее число страниц, позволяющих направить деньги фактически анонимно попробуйте здесь. большинство имеют проблему скрытного платежа электронных счетов.