У меня есть база данных sqlite, из которой я хочу извлечь определенные таблицы. База данных содержит тысячи имен таблиц. Меня интересуют только таблицы, которые начинаются с «contact_» Однако есть много контактных контактов, обращайтесь к ####, вы его называете.Python SQLite3 Как извлечь только определенные таблицы
Затем мне нужно извлечь данные из каждой таблицы «contact_ ########» и создать документ типа CSV или таблицы. Всего 1600 экземпляров с уникальными именами.
Я изначально думал, что могу сделать это с помощью SQL-запроса, но не смог. Затем я попытался написать небольшой скрипт, чтобы сделать это, но я не мог понять, как настроить условные выражения для cursor.execute, чтобы извлекать данные только из интересующих меня таблиц.
Любые идеи?
Update **
import sqlite3
fname = raw_input("Enter your filename: ")
con = sqlite3.connect(fname)
cursor = con.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
mydata = cursor.fetchall()
for lines in mydata:
print lines
Я был в состоянии получить таблицы в список. Мне все еще нужно добавить условие к моему ГДЕ для «contact_». Когда я его добавлю, я получаю только [] в моей печати. Я думаю, что я что-то путаю здесь.
**** Обновление 2 *** Благодаря @Olver W. ниже, кто меня на правильном пути с этим.
fname = raw_input("Enter your filename: ")
con = sqlite3.connect(fname)
cursor = con.cursor()
for tablename in cursor.execute("SELECT name FROM sqlite_master WHERE type='table';"):
if tablename[0].startswith('Contacts_'):
tablename = str(tablename[0])
query = "Select * FROM " + tablename
query = str(query)
data = cursor.execute(query)
for items in data:
print items
Я собираюсь вывести эту электронную таблицу в некоторых случаях или другой SQLite базы данных, но в моей тестовой базе данных она выбирает соответствующие критерии и вывода строк правильно. Я могу и буду конденсировать его немного, чтобы сделать его чище, но это делает трюк. Благодаря
Вы могли бы сначала получить список всех таблиц, присутствующих в базе данных, из которых извлекается список, содержащий таблицы, которые начинаются с 'contact', а затем строят отдельные запросы, итерируя этот список имен таблиц. – Bhargav
Если я добавлю условие «контакт», я ничего не получаю. Я думаю, мне нужно добавить подстановочный знак или что-то еще. Добавлено обновление выше – BillSam