File Explorer

/proc/self/root/proc/thread-self/root/proc/1/task/1/cwd/usr/lib64/python3.9/sqlite3

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

dump.py2.8 KB · 71 lines
# Mimic the sqlite3 console shell's .dump command# Author: Paul Kippes <kippesp@gmail.com> # Every identifier in sql is quoted based on a comment in sqlite# documentation "SQLite adds new keywords from time to time when it# takes on new features. So to prevent your code from being broken by# future enhancements, you should normally quote any identifier that# is an English language word, even if you do not have to." def _iterdump(connection):    """    Returns an iterator to the dump of the database in an SQL text format.     Used to produce an SQL dump of the database.  Useful to save an in-memory    database for later restoration.  This function should not be called    directly but instead called from the Connection method, iterdump().    """     cu = connection.cursor()    yield('BEGIN TRANSACTION;')     # sqlite_master table contains the SQL CREATE statements for the database.    q = """        SELECT "name", "type", "sql"        FROM "sqlite_master"            WHERE "sql" NOT NULL AND            "type" == 'table'            ORDER BY "name"        """    schema_res = cu.execute(q)    for table_name, type, sql in schema_res.fetchall():        if table_name == 'sqlite_sequence':            yield('DELETE FROM "sqlite_sequence";')        elif table_name == 'sqlite_stat1':            yield('ANALYZE "sqlite_master";')        elif table_name.startswith('sqlite_'):            continue        # NOTE: Virtual table support not implemented        #elif sql.startswith('CREATE VIRTUAL TABLE'):        #    qtable = table_name.replace("'", "''")        #    yield("INSERT INTO sqlite_master(type,name,tbl_name,rootpage,sql)"\        #        "VALUES('table','{0}','{0}',0,'{1}');".format(        #        qtable,        #        sql.replace("''")))        else:            yield('{0};'.format(sql))         # Build the insert statement for each row of the current table        table_name_ident = table_name.replace('"', '""')        res = cu.execute('PRAGMA table_info("{0}")'.format(table_name_ident))        column_names = [str(table_info[1]) for table_info in res.fetchall()]        q = """SELECT 'INSERT INTO "{0}" VALUES({1})' FROM "{0}";""".format(            table_name_ident,            ",".join("""'||quote("{0}")||'""".format(col.replace('"', '""')) for col in column_names))        query_res = cu.execute(q)        for row in query_res:            yield("{0};".format(row[0]))     # Now when the type is 'index', 'trigger', or 'view'    q = """        SELECT "name", "type", "sql"        FROM "sqlite_master"            WHERE "sql" NOT NULL AND            "type" IN ('index', 'trigger', 'view')        """    schema_res = cu.execute(q)    for name, type, sql in schema_res.fetchall():        yield('{0};'.format(sql))     yield('COMMIT;')