diff -r 5e18ff5476e8 Lib/sqlite3/dump.py --- a/Lib/sqlite3/dump.py Mon Nov 07 16:30:01 2011 -0600 +++ b/Lib/sqlite3/dump.py Tue Nov 08 09:39:13 2011 +0100 @@ -40,12 +40,12 @@ yield('%s;' % sql) # Build the insert statement for each row of the current table - res = cu.execute("PRAGMA table_info('%s')" % table_name) + res = cu.execute("PRAGMA table_info('%s')" % table_name.replace('"', '""')) column_names = [str(table_info[1]) for table_info in res.fetchall()] q = "SELECT 'INSERT INTO \"%(tbl_name)s\" VALUES(" - q += ",".join(["'||quote(" + col + ")||'" for col in column_names]) - q += ")' FROM '%(tbl_name)s'" - query_res = cu.execute(q % {'tbl_name': table_name}) + q += ",".join("'||quote(\"" + col.replace('"', '""') + "\")||'" for col in column_names) + q += ")' FROM \"%(tbl_name)s\"" + query_res = cu.execute(q % {'tbl_name': table_name.replace('"', '""')}) for row in query_res: yield("%s;" % row[0]) diff -r 5e18ff5476e8 Lib/sqlite3/test/dump.py --- a/Lib/sqlite3/test/dump.py Mon Nov 07 16:30:01 2011 -0600 +++ b/Lib/sqlite3/test/dump.py Tue Nov 08 09:39:13 2011 +0100 @@ -25,6 +25,10 @@ "t2_i2 integer, primary key (id)," \ "foreign key(t2_i1) references t1(t1_i1));" , + "CREATE TABLE t3('group' text, 'index' integer);" + , + """CREATE TABLE t4('legal""name' text);""" + , "CREATE TRIGGER trigger_1 update of t1_i1 on t1 " \ "begin " \ "update t2 set t2_i1 = new.t1_i1 where t2_i1 = old.t1_i1; " \