From b2f0d64fa8c06b5662ce6831dc3fe1588397c76b Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 1 Jul 2005 02:43:15 +0000 Subject: Initial revision --- lib/sqlalchemy/databases/sqlite.py | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/sqlalchemy/databases/sqlite.py (limited to 'lib/sqlalchemy/databases/sqlite.py') diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py new file mode 100644 index 000000000..220892340 --- /dev/null +++ b/lib/sqlalchemy/databases/sqlite.py @@ -0,0 +1,53 @@ +import sys, StringIO, string, types + +import sqlalchemy.sql as sql +import sqlalchemy.engine as engine +import sqlalchemy.schema as schema +import sqlalchemy.ansisql as ansisql +from sqlalchemy.ansisql import * + +from pysqlite2 import dbapi2 as sqlite + +colspecs = { + schema.INT : "INTEGER", + schema.CHAR : "CHAR(%(length)s)", + schema.VARCHAR : "VARCHAR(%(length)s)", + schema.TEXT : "TEXT", + schema.FLOAT : "NUMERIC(%(precision)s, %(length)s)", + schema.DECIMAL : "NUMERIC(%(precision)s, %(length)s)", + schema.TIMESTAMP : "TIMESTAMP", + schema.DATETIME : "TIMESTAMP", + schema.CLOB : "TEXT", + schema.BLOB : "BLOB", + schema.BOOLEAN : "BOOLEAN", +} + +def engine(filename, **params): + return SQLiteSQLEngine(filename, **params) + +class SQLiteSQLEngine(ansisql.ANSISQLEngine): + def __init__(self, filename, **params): + self.filename = filename + ansisql.ANSISQLEngine.__init__(self, **params) + + def connect_args(self): + return ([self.filename], {}) + + def dbapi(self): + return sqlite + + def columnimpl(self, column): + return SQLiteColumnImpl(column) + +class SQLiteColumnImpl(sql.ColumnSelectable): + def _get_specification(self): + coltype = self.column.type + if type(coltype) == types.ClassType: + key = coltype + else: + key = coltype.__class__ + + return self.name + " " + colspecs[key] % {'precision': getattr(coltype, 'precision', None), 'length' : getattr(coltype, 'length', None)} + + + -- cgit v1.2.1