diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst
index 6c6cf03..da313fd 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -378,6 +378,27 @@
    deleted since the database connection was opened.
 
 
+.. attribute:: Connection.iterdump
+
+   Returns an iterator to dump the database in an SQL text format.  Useful when
+   saving an in-memory database for later restoration.  This function provides
+   the same capabilities as the :kbd:`.dump` command in the :program:`sqlite3`
+   shell.
+
+   .. versionadded:: 2.6
+
+   Example::
+
+      # Convert file existing_db.db to SQL dump file dump.sql
+      import sqlite3, os
+
+      con = sqlite3.connect('existing_db.db')
+      full_dump = os.linesep.join([line for line in con.iterdump()])
+      f = open('dump.sql', 'w')
+      f.writelines(full_dump)
+      f.close()
+
+
 .. _sqlite3-cursor-objects:
 
 Cursor Objects
diff --git a/Lib/test/test_sqlite.py b/Lib/test/test_sqlite.py
index 3566f31..d63bb1d 100644
--- a/Lib/test/test_sqlite.py
+++ b/Lib/test/test_sqlite.py
@@ -5,12 +5,13 @@
 except ImportError:
     raise TestSkipped('no sqlite available')
 from sqlite3.test import (dbapi, types, userfunctions, py25tests,
-                                factory, transactions, hooks, regression)
+                                factory, transactions, hooks, regression,
+                                dump)
 
 def test_main():
     run_unittest(dbapi.suite(), types.suite(), userfunctions.suite(),
                  py25tests.suite(), factory.suite(), transactions.suite(),
-                 hooks.suite(), regression.suite())
+                 hooks.suite(), regression.suite(), dump.suite())
 
 if __name__ == "__main__":
     test_main()
diff --git a/Misc/ACKS b/Misc/ACKS
index 978b2eb..00fcff1 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -362,6 +362,7 @@
 Vivek Khera
 Mads Kiilerich
 Taek Joo Kim
+Paul Kippes
 Steve Kirsch
 Ron Klatchko
 Bastian Kleineidam
diff --git a/Misc/NEWS b/Misc/NEWS
index 7264dca..a998f9c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and builtins
 -----------------
 
+- Patch #2426: Added sqlite3.Connection.iterdump method to allow easy dumping
+  of databases.  Contributed by Paul Kippes at PyCon 2008.
+
 - Patch #2477: Added from __future__ import unicode_literals.
 
 - Added backport of bytearray type.
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c
index 92c6a24..8269e0b 100644
--- a/Modules/_sqlite/connection.c
+++ b/Modules/_sqlite/connection.c
@@ -1199,6 +1199,52 @@
     return retval;
 }
 
+/* Function author: Paul Kippes <kippesp@gmail.com>
+ * Class method of Connection to call the Python function _iterdump
+ * of the sqlite3 module.
+ */
+static PyObject *
+pysqlite_connection_iterdump(pysqlite_Connection* self, PyObject* args)
+{
+    PyObject* retval = NULL;
+    PyObject* module = NULL;
+    PyObject* module_dict;
+    PyObject* pyfn_iterdump;
+
+    if (!pysqlite_check_connection(self)) {
+        goto finally;
+    }
+
+    module = PyImport_ImportModule(MODULE_NAME ".dump");
+    if (!module) {
+        goto finally;
+    }
+
+    module_dict = PyModule_GetDict(module);
+    if (!module_dict) {
+        goto finally;
+    }
+
+    pyfn_iterdump = PyDict_GetItemString(module_dict, "_iterdump");
+    if (!pyfn_iterdump) {
+        PyErr_SetString(pysqlite_OperationalError, "Failed to obtain _iterdump() reference");
+        goto finally;
+    }
+
+    args = PyTuple_New(1);
+    if (!args) {
+        goto finally;
+    }
+    Py_INCREF(self);
+    PyTuple_SetItem(args, 0, (PyObject*)self);
+    retval = PyObject_CallObject(pyfn_iterdump, args);
+
+finally:
+    Py_XDECREF(args);
+    Py_XDECREF(module);
+    return retval;
+}
+
 static PyObject *
 pysqlite_connection_create_collation(pysqlite_Connection* self, PyObject* args)
 {
@@ -1344,6 +1390,8 @@
         PyDoc_STR("Creates a collation function. Non-standard.")},
     {"interrupt", (PyCFunction)pysqlite_connection_interrupt, METH_NOARGS,
         PyDoc_STR("Abort any pending database operation. Non-standard.")},
+    {"iterdump", (PyCFunction)pysqlite_connection_iterdump, METH_NOARGS,
+        PyDoc_STR("Returns iterator to the dump of the database in an SQL text format.")},
     {"__enter__", (PyCFunction)pysqlite_connection_enter, METH_NOARGS,
         PyDoc_STR("For context manager. Non-standard.")},
     {"__exit__", (PyCFunction)pysqlite_connection_exit, METH_VARARGS,
