2011-01-17 61 views
10

Estoy tratando de escribir una secuencia de comandos para importar un archivo de base de datos. Escribí el guión para exportar el archivo así:Python y sqlite3 - importar y exportar bases de datos

import sqlite3 

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

Ahora quiero poder importar esa base de datos. Lo he intentado:

import sqlite3 

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

pero no puedo ejecutar más de una afirmación. ¿Hay alguna manera de hacer que ejecute un script SQL directamente?

Respuesta

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

Documentation.

+0

esto fue que, gracias – JPC

+0

@ Adam - Creo que te refieres a crear un cursor primero si copió eso de la documentación ("cur.") – RichardTheKiwi

+0

El módulo sqlite3 permite cualquiera de los usos; elige tu opción. – bernie

3

Intente utilizar

con.executescript(str) 

Documentación

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. 

o crear el cursor primera

import sqlite3 

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