db.iterdump() method uses sqlite-dump if available

This commit is contained in:
Simon Willison 2023-06-25 15:29:00 -07:00
commit 31bde41baf
8 changed files with 55 additions and 8 deletions

View file

@ -38,6 +38,12 @@ from typing import (
)
import uuid
try:
from sqlite_dump import iterdump
except ImportError:
iterdump = None
SQLITE_MAX_VARS = 999
_quote_fts_re = re.compile(r'\s+|(".*?")')
@ -1149,6 +1155,18 @@ class Database:
sql += " [{}]".format(name)
self.execute(sql)
def iterdump(self) -> Generator[str, None, None]:
"A sequence of strings representing a SQL dump of the database"
if iterdump:
yield from iterdump(self.conn)
else:
try:
yield from self.conn.iterdump()
except AttributeError:
raise AttributeError(
"conn.iterdump() not found - try pip install sqlite-dump"
)
def init_spatialite(self, path: Optional[str] = None) -> bool:
"""
The ``init_spatialite`` method will load and initialize the SpatiaLite extension.