diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-03-13 00:24:54 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-03-13 00:24:54 +0000 |
commit | c5e1abc7f7adce841775ea92b72bcf95207027af (patch) | |
tree | b406fd4e6ede57ed8805a40a909c3c69207d3414 /lib/sqlalchemy/databases | |
parent | 2ce45d70c7e499fd6c239d963f50cd839b28629b (diff) | |
download | sqlalchemy-c5e1abc7f7adce841775ea92b72bcf95207027af.tar.gz |
refactor to Compiled.get_params() to return new ClauseParameters object, a more intelligent bind parameter dictionary that does type conversions late and preserves the unconverted value; used to fix mappers not comparing correct value in post-fetch [ticket:110]
removed pre_exec assertion from oracle/firebird regarding "check for sequence/primary key value"
fix to Unicode type to check for null, fixes [ticket:109]
create_engine() now uses genericized parameters; host/hostname, db/dbname/database, password/passwd, etc. for all engine connections
fix to select([func(column)]) so that it creates a FROM clause to the column's table, fixes [ticket:111]
doc updates for column defaults, indexes, connection pooling, engine params
unit tests for the above bugfixes
Diffstat (limited to 'lib/sqlalchemy/databases')
-rw-r--r-- | lib/sqlalchemy/databases/firebird.py | 15 | ||||
-rw-r--r-- | lib/sqlalchemy/databases/mysql.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/databases/oracle.py | 15 | ||||
-rw-r--r-- | lib/sqlalchemy/databases/postgres.py | 2 |
4 files changed, 6 insertions, 28 deletions
diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py index 4dd4aa2a6..7d5cfed11 100644 --- a/lib/sqlalchemy/databases/firebird.py +++ b/lib/sqlalchemy/databases/firebird.py @@ -176,19 +176,8 @@ class FBSQLEngine(ansisql.ANSISQLEngine): return self.context.last_inserted_ids def pre_exec(self, proxy, compiled, parameters, **kwargs): - # this is just an assertion that all the primary key columns in an insert statement - # have a value set up, or have a default generator ready to go - if getattr(compiled, "isinsert", False): - if isinstance(parameters, list): - plist = parameters - else: - plist = [parameters] - for param in plist: - for primary_key in compiled.statement.table.primary_key: - if not param.has_key(primary_key.key) or param[primary_key.key] is None: - if primary_key.default is None: - raise "Column '%s.%s': Firebird primary key columns require a default value or a schema.Sequence to create ids" % (primary_key.table.name, primary_key.name) - + pass + def _executemany(self, c, statement, parameters): rowcount = 0 for param in parameters: diff --git a/lib/sqlalchemy/databases/mysql.py b/lib/sqlalchemy/databases/mysql.py index 8b262877c..c55da97cb 100644 --- a/lib/sqlalchemy/databases/mysql.py +++ b/lib/sqlalchemy/databases/mysql.py @@ -134,7 +134,7 @@ class MySQLEngine(ansisql.ANSISQLEngine): def __init__(self, opts, module = None, **params): if module is None: self.module = mysql - self.opts = opts or {} + self.opts = self._translate_connect_args(('host', 'db', 'user', 'passwd'), opts) ansisql.ANSISQLEngine.__init__(self, **params) def connect_args(self): diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 8f8058680..21b478001 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -90,7 +90,7 @@ def descriptor(): class OracleSQLEngine(ansisql.ANSISQLEngine): def __init__(self, opts, use_ansi = True, module = None, **params): self._use_ansi = use_ansi - self.opts = opts or {} + self.opts = self._translate_connect_args((None, 'dsn', 'user', 'password'), opts) if module is None: self.module = cx_Oracle else: @@ -181,18 +181,7 @@ order by UCC.CONSTRAINT_NAME""",{'table_name' : table.name.upper()}) return self.context.last_inserted_ids def pre_exec(self, proxy, compiled, parameters, **kwargs): - # this is just an assertion that all the primary key columns in an insert statement - # have a value set up, or have a default generator ready to go - if getattr(compiled, "isinsert", False): - if isinstance(parameters, list): - plist = parameters - else: - plist = [parameters] - for param in plist: - for primary_key in compiled.statement.table.primary_key: - if not param.has_key(primary_key.key) or param[primary_key.key] is None: - if primary_key.default is None: - raise "Column '%s.%s': Oracle primary key columns require a default value or a schema.Sequence to create ids" % (primary_key.table.name, primary_key.name) + pass def _executemany(self, c, statement, parameters): rowcount = 0 diff --git a/lib/sqlalchemy/databases/postgres.py b/lib/sqlalchemy/databases/postgres.py index db20b636c..72d426012 100644 --- a/lib/sqlalchemy/databases/postgres.py +++ b/lib/sqlalchemy/databases/postgres.py @@ -181,7 +181,7 @@ class PGSQLEngine(ansisql.ANSISQLEngine): self.version = 1 except: self.version = 1 - self.opts = opts or {} + self.opts = self._translate_connect_args(('host', 'database', 'user', 'password'), opts) if self.opts.has_key('port'): if self.version == 2: self.opts['port'] = int(self.opts['port']) |