Ответ 1
sql = f.read() # watch out for built-in `str`
cur.executescript(sql)
Я пытаюсь написать script для импорта файла базы данных. Я написал script для экспорта файла следующим образом:
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 script напрямую?
sql = f.read() # watch out for built-in `str`
cur.executescript(sql)
Попробуйте использовать
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)