2011-01-17 5 views
10

Я пытаюсь написать сценарий для импорта файла базы данных. Я написал сценарий для экспорта файла следующим образом:Python и sqlite3 - импорт и экспорт баз данных

import sqlite3 

con = sqlite3.connect('../sqlite.db') 
with open('../dump.sql', 'w') as f: 
    for line in con.iterdump(): 
     f.write('%s\n' % line) 

Теперь я хочу иметь возможность импортировать эту базу данных. Я пробовал:

import sqlite3 

con = sqlite3.connect('../sqlite.db') 
f = open('../dump.sql','r') 
str = f.read() 
con.execute(str) 

, но мне не разрешено выполнять несколько заявлений. Есть ли способ заставить его запустить SQL-скрипт напрямую?

ответ

14
sql = f.read() # watch out for built-in `str` 
cur.executescript(sql) 

Documentation.

+0

это было, благодаря – JPC

+0

@adam - Я думаю, что вы имеете в виду, чтобы создать курсор первый если вы скопировали это из документации («cur.») – RichardTheKiwi

+0

Модуль sqlite3 позволяет либо использовать; выбирайте. – bernie

3

Попробуйте использовать

con.executescript(str) 

Документация

Connection.executescript(sql_script) 
    This is a nonstandard shortcut that creates an intermediate cursor object 
    by calling the cursor method, then calls the cursor’s executescript 
    method with the parameters given. 

Или создать курсор первый

import sqlite3 

con = sqlite3.connect('../sqlite.db') 
f = open('../dump.sql','r') 
str = f.read() 
cur = con.cursor() 
cur.execute(str) 
Смежные вопросы