query.join(Company.employees.of_type(Engineer)).
filter(Engineer.name=='foo')
- - Preventive code against a potential lost-reference bug in
- flush().
-
- - Expressions used in filter(), filter_by() and others, when
- they make usage of a clause generated from a relation
- using the identity of a child object
- (e.g. filter(Parent.child==<somechild>)), evaluate the
- actual primary key value of <somechild> at execution time
- so that the autoflush step of the Query can complete,
- thereby populating the PK value of <somechild> in the case
- that <somechild> was pending.
+ - Preventive code against a potential lost-reference bug in
+ flush().
+
+ - Expressions used in filter(), filter_by() and others, when
+ they make usage of a clause generated from a relation using
+ the identity of a child object (e.g.,
+ filter(Parent.child==<somechild>)), evaluate the actual
+ primary key value of <somechild> at execution time so that
+ the autoflush step of the Query can complete, thereby
+ populating the PK value of <somechild> in the case that
+ <somechild> was pending.
+
+- dialects
+ - Invalid SQLite connection URLs now raise an error.
+
0.4.3
------
return self.dbapi.sqlite_version_info
def create_connect_args(self, url):
+ if url.username or url.password or url.host or url.port:
+ raise exceptions.ArgumentError(
+ "Invalid SQLite URL: %s\n"
+ "Valid SQLite URL forms are:\n"
+ " sqlite:///:memory: (or, sqlite://)\n"
+ " sqlite:///relative/path/to/file.db\n"
+ " sqlite:////absolute/path/to/file.db" % (url,))
filename = url.database or ':memory:'
opts = url.query.copy()