Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
continue
if args[0]=="batch":
self.interactive=False
args=args[1:]
continue
if args[0] in ("separator", "nullvalue", "encoding"):
if len(args)<2:
raise self.Error("You need to specify a value after -"+args[0])
getattr(self, "command_"+args[0])([args[1]])
args=args[2:]
continue
if args[0]=="version":
self.write(self.stdout, apsw.sqlitelibversion()+"\n")
# A pretty gnarly thing to do
sys.exit(0)
if args[0]=="help":
self.write(self.stderr, self.usage())
sys.exit(0)
if args[0] in ("no-colour", "no-color", "nocolour", "nocolor"):
self.colour_scheme="off"
self._out_colour()
args=args[1:]
continue
# only remaining known args are output modes
if getattr(self, "output_"+args[0], None):
self.command_mode(args[:1])
continue
if args[0]=="batch":
self.interactive=False
args=args[1:]
continue
if args[0] in ("separator", "nullvalue", "encoding"):
if len(args)<2:
raise self.Error("You need to specify a value after -"+args[0])
getattr(self, "command_"+args[0])([args[1]])
args=args[2:]
continue
if args[0]=="version":
self.write(self.stdout, apsw.sqlitelibversion()+"\n")
# A pretty gnarly thing to do
sys.exit(0)
if args[0]=="help":
self.write(self.stderr, self.usage())
sys.exit(0)
if args[0] in ("no-colour", "no-color", "nocolour", "nocolor"):
self.colour_scheme="off"
self._out_colour()
args=args[1:]
continue
# only remaining known args are output modes
if getattr(self, "output_"+args[0], None):
self.command_mode(args[:1])
Module Attributes:
-----------
:initsql: SQL commands that are executed whenever a new
connection is created.
'''
from .logging import logging, QuietError # Ensure use of custom logger class
import apsw
import os
log = logging.getLogger(__name__)
sqlite_ver = tuple([ int(x) for x in apsw.sqlitelibversion().split('.') ])
if sqlite_ver < (3, 7, 0):
raise QuietError('SQLite version too old, must be 3.7.0 or newer!\n')
initsql = (
# WAL mode causes trouble with e.g. copy_tree, so we don't use it at the moment
# (cf. http://article.gmane.org/gmane.comp.db.sqlite.general/65243).
# However, if we start using it we must initiaze it *before* setting
# locking_mode to EXCLUSIVE, otherwise we can't switch the locking
# mode without first disabling WAL.
'PRAGMA synchronous = OFF',
'PRAGMA journal_mode = OFF',
#'PRAGMA synchronous = NORMAL',
#'PRAGMA journal_mode = WAL',
'PRAGMA foreign_keys = OFF',
"""
import apsw
from peewee import *
from peewee import __exception_wrapper__
from peewee import BooleanField as _BooleanField
from peewee import DateField as _DateField
from peewee import DateTimeField as _DateTimeField
from peewee import DecimalField as _DecimalField
from peewee import TimeField as _TimeField
from peewee import logger
from playhouse.sqlite_ext import SqliteExtDatabase
class APSWDatabase(SqliteExtDatabase):
server_version = tuple(int(i) for i in apsw.sqlitelibversion().split('.'))
def __init__(self, database, **kwargs):
self._modules = {}
super(APSWDatabase, self).__init__(database, **kwargs)
def register_module(self, mod_name, mod_inst):
self._modules[mod_name] = mod_inst
if not self.is_closed():
self.connection().createmodule(mod_name, mod_inst)
def unregister_module(self, mod_name):
del(self._modules[mod_name])
def _connect(self):
conn = apsw.Connection(self.database, **self.connect_params)
if self._timeout is not None:
def apsw_is_available():
"""Checks lock-ability for SQLite on the current file system"""
try:
import apsw #another python sqlite wrapper (maybe supports URIs)
except ImportError:
return False
# if you got here, apsw is available, check we have matching versions w.r.t
# the sqlit3 module
import sqlite3
if apsw.sqlitelibversion() != sqlite3.sqlite_version:
return False
# if you get to this point, all seems OK
return True
for name in tables:
if len(self.db.cursor().execute("select * from "+self._fmt_sql_identifier(stat[0])+" WHERE tbl=?", (name,)).fetchall()):
if name not in analyze_needed:
analyze_needed.append(name)
analyze_needed.sort()
def blank():
self.write(self.stdout, "\n")
def comment(s):
s=unicodify(s)
self.write(self.stdout, textwrap.fill(s, 78, initial_indent="-- ", subsequent_indent="-- ")+"\n")
pats=", ".join([(x,"(All)")[x=="%"] for x in cmd])
comment("SQLite dump (by APSW %s)" % (apsw.apswversion(),))
comment("SQLite version " + apsw.sqlitelibversion())
comment("Date: " +unicodify(time.strftime("%c")))
comment("Tables like: "+pats)
comment("Database: "+self.db.filename)
try:
import getpass
import socket
comment("User: %s @ %s" % (unicodify(getpass.getuser()), unicodify(socket.gethostname())))
except ImportError:
pass
blank()
comment("The values of various per-database settings")
self.write(self.stdout, "PRAGMA page_size="+str(self.db.cursor().execute("pragma page_size").fetchall()[0][0])+";\n")
comment("PRAGMA encoding='"+self.db.cursor().execute("pragma encoding").fetchall()[0][0]+"';\n")
vac={0: "NONE", 1: "FULL", 2: "INCREMENTAL"}
vacvalue=self.db.cursor().execute("pragma auto_vacuum").fetchall()[0][0]
sqlandmtermstatements=['select ', 'create ', 'where ', 'table ', 'group by ', 'drop ', 'order by ', 'index ', 'from ', 'alter ', 'limit ', 'delete ', '..',
"attach database '", 'detach database ', 'distinct', 'exists ']
dotcompletions=['.help ', '.colnums', '.schema ', '.functions ', '.tables', '.explain ', '.vacuum', '.queryplan ']
allfuncs=functions.functions['vtable'].keys()+functions.functions['row'].keys()+functions.functions['aggregate'].keys()
alltables=[]
alltablescompl=[]
updated_tables=set()
update_tablelist()
lastcols=[]
newcols=[]
colscompl=[]
#Intro Message
if not pipedinput:
print mtermdetails
print "running on Python: "+'.'.join([str(x) for x in sys.version_info[0:3]])+', APSW: '+apsw.apswversion()+', SQLite: '+apsw.sqlitelibversion(),
try:
sys.stdout.write(", madIS: "+functions.VERSION+'\n')
except:
print
print intromessage
number_of_kb_exceptions=0
while True:
statement = raw_input_no_history("mterm> ")
if statement==None:
number_of_kb_exceptions+=1
print
if number_of_kb_exceptions<2:
continue
else:
readline.write_history_file(histfile)