Я предлагаю переименовать вопрос в нечто не специфичное для Python, так как ответ на самом деле универсален для интерфейсов, использующих SQL.
unode 11.11.10
2
Правда, хотя я ожидал, что Python API спросит об этом. Я постараюсь найти правильное имя.
Noamtm
3
Если вы хотите отобразить таблицы из командной строки sqlite3, обратитесь к stackoverflow.com/questions/82875/… . Если вы используете пакет Python sqlite3, посмотрите ответ Давуда Тагави-Неджада здесь. Я предлагаю ОП добавить Python обратно в заголовок вопроса и выбрать ответ Давуда. Я нашел эту страницу, погуглив "показать таблицы Python sqlite3", так как Google знает старый заголовок вопроса. Поиски внутри SO не смогли бы приземлиться здесь. Без угла Питона связанный дублирующий вопрос 82875 получил гораздо больше толпы мудрости.
Беннет Браун
Ответы:
106
Вы можете получить список таблиц и схем, запросив таблицу SQLITE_MASTER:
sqlite>.tab
job snmptarget t1 t2 t3
sqlite>select name from sqlite_master where type ='table';
job
t1
t2
snmptarget
t3
sqlite>.schema job
CREATE TABLE job (
id INTEGER PRIMARY KEY,
data VARCHAR);
sqlite>select sql from sqlite_master where type ='table'and name ='job';
CREATE TABLE job (
id INTEGER PRIMARY KEY,
data VARCHAR)
@ jbuddy_13 sqlite>- это клиентская строка командной строки sqlite. Цель этого примера состояла в том, чтобы продемонстрировать, как можно запросить базу данных для отображения таблиц и схем.
конвертер42
245
В Python:
con = sqlite3.connect('database.db')
cursor = con.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")print(cursor.fetchall())
Остерегайтесь моего другого ответа . Существует гораздо более быстрый способ использования панд.
# Convert file existing_db.db to SQL dump file dump.sqlimport sqlite3, os
con = sqlite3.connect('existing_db.db')with open('dump.sql','w')as f:for line in con.iterdump():
f.write('%s\n'% line)
Я получил много ошибок в написанном вами фрагменте и не вижу, например, "db_alias" ни в ссылочных документах, ни в других примерах. В контексте других примеров, я думаю, вы хотите эту строку, например, Jobтаблицу: meta = cursor.execute("PRAGMA table_info('Job')") и ваша первая строка кажется не связанной с остальными.
nealmcb
4
Если кто-то хочет сделать то же самое с пандами
import pandas as pd
import sqlite3
conn = sqlite3.connect("db.sqlite3")
table = pd.read_sql_query("SELECT name FROM sqlite_master WHERE type='table'", conn)print(table)
Вы можете использовать этот анализатор определений для разбора определений, таких как код ниже:
$parser =newSqliteTableDefinitionParser;
$parser->parseColumnDefinitions('x INTEGER PRIMARY KEY, y DOUBLE, z DATETIME default \'2011-11-10\', name VARCHAR(100)');
Ответы:
Вы можете получить список таблиц и схем, запросив таблицу SQLITE_MASTER:
источник
sqlite> .schema job
неверный синтаксис в Python ... что мне не хватает?sqlite>
- это клиентская строка командной строки sqlite. Цель этого примера состояла в том, чтобы продемонстрировать, как можно запросить базу данных для отображения таблиц и схем.В Python:
Остерегайтесь моего другого ответа . Существует гораздо более быстрый способ использования панд.
источник
cursor.close()
иdb.close()
Самый быстрый способ сделать это в Python - использовать Pandas (версия 0.16 и выше).
Дамп одной таблицы:
Дамп всех таблиц:
источник
cursor.close()
иdb.close()
.with sqlite3.connect('database.db') as db:
Я не знаком с Python API, но вы всегда можете использовать
источник
Вот короткая и простая программа на python для распечатки имен таблиц и имен столбцов для этих таблиц (python 2. следует python 3).
(РЕДАКТИРОВАТЬ: я получаю периодические голосования по этому вопросу, так что вот версия python3 для людей, которые находят этот ответ)
источник
Очевидно, версия sqlite3, включенная в Python 2.6, обладает такой возможностью: http://docs.python.org/dev/library/sqlite3.html
источник
После долгих раздумий я нашел лучший ответ в sqlite docs для перечисления метаданных для таблицы, даже для прикрепленных баз данных.
Ключевой информацией является префикс table_info, а не my_table с именем дескриптора вложения.
источник
Job
таблицу:meta = cursor.execute("PRAGMA table_info('Job')")
и ваша первая строка кажется не связанной с остальными.Если кто-то хочет сделать то же самое с пандами
источник
Проверьте здесь на свалку. Кажется, в библиотеке sqlite3 есть функция дампа.
источник
источник
Я реализовал синтаксический анализатор таблиц sqlite в PHP, вы можете проверить здесь: https://github.com/c9s/LazyRecord/blob/master/src/LazyRecord/TableParser/SqliteTableDefinitionParser.php
Вы можете использовать этот анализатор определений для разбора определений, таких как код ниже:
источник