diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-07-01 02:43:15 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2005-07-01 02:43:15 +0000 |
commit | b2f0d64fa8c06b5662ce6831dc3fe1588397c76b (patch) | |
tree | e37ba5e716c999f91b287b46583de7beab4f24d0 /lib/sqlalchemy/databases/sqlite.py | |
parent | 76ed6f7ab6823d0906286026a40e6a3fca7ada27 (diff) | |
download | sqlalchemy-b2f0d64fa8c06b5662ce6831dc3fe1588397c76b.tar.gz |
Initial revision
Diffstat (limited to 'lib/sqlalchemy/databases/sqlite.py')
-rw-r--r-- | lib/sqlalchemy/databases/sqlite.py | 53 |
1 files changed, 53 insertions, 0 deletions
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)} + + + |