Python и sqlite3 - импорт и экспорт баз данных - PullRequest
13 голосов
/ 18 января 2011

Я пытаюсь написать скрипт для импорта файла базы данных. Я написал скрипт для экспорта файла так:

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 напрямую?

Ответы [ 2 ]

17 голосов
/ 18 января 2011
sql = f.read() # watch out for built-in `str`
cur.executescript(sql)

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

4 голосов
/ 18 января 2011

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

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...