summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/sqlite.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2005-07-01 02:43:15 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2005-07-01 02:43:15 +0000
commitb2f0d64fa8c06b5662ce6831dc3fe1588397c76b (patch)
treee37ba5e716c999f91b287b46583de7beab4f24d0 /lib/sqlalchemy/databases/sqlite.py
parent76ed6f7ab6823d0906286026a40e6a3fca7ada27 (diff)
downloadsqlalchemy-b2f0d64fa8c06b5662ce6831dc3fe1588397c76b.tar.gz
Initial revision
Diffstat (limited to 'lib/sqlalchemy/databases/sqlite.py')
-rw-r--r--lib/sqlalchemy/databases/sqlite.py53
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)}
+
+
+