from test.lib.testing import eq_, assert_raises, assert_raises_message
import operator
-from sqlalchemy import *
+from sqlalchemy import MetaData, null, exists, text, union, literal, \
+ literal_column, func, between, Unicode, desc, and_, bindparam, \
+ select, distinct
from sqlalchemy import exc as sa_exc, util
from sqlalchemy.sql import compiler, table, column
+from sqlalchemy.sql import expression
from sqlalchemy.engine import default
-from sqlalchemy.orm import *
-from sqlalchemy.orm import attributes
+from sqlalchemy.orm import attributes, mapper, relationship, backref, \
+ configure_mappers, create_session, synonym, Session, class_mapper, \
+ aliased, column_property, joinedload_all, joinedload, Query
from test.lib.assertsql import CompiledSQL
from test.lib.testing import eq_
+from test.lib.schema import Table, Column
import sqlalchemy as sa
-from test.lib import testing, AssertsCompiledSQL, Column, engines
-
+from test.lib import testing, AssertsCompiledSQL, engines
from test.orm import _fixtures
-
from test.lib import fixtures
from sqlalchemy.orm.util import join, outerjoin, with_parent
class ExpressionTest(QueryTest, AssertsCompiledSQL):
+ __dialect__ = 'default'
def test_deferred_instances(self):
User, addresses, Address = (self.classes.User,
"addresses.id AS addresses_id, addresses.user_id AS "
"addresses_user_id, addresses.email_address AS "
"addresses_email_address FROM users JOIN addresses "
- "ON users.id = addresses.user_id) AS anon_1",
- use_default_dialect=True
+ "ON users.id = addresses.user_id) AS anon_1"
)
- def test_scalar_subquery(self):
+ def test_scalar_subquery_compile_whereclause(self):
User = self.classes.User
+ Address = self.classes.Address
session = create_session()
- q = session.query(User.id).filter(User.id==7).subquery()
-
- q = session.query(User).filter(User.id==q)
+ q = session.query(User.id).filter(User.id==7)
- eq_(User(id=7), q.one())
+ q = session.query(Address).filter(Address.user_id==q)
+ assert isinstance(q._criterion.right, expression.ColumnElement)
+ self.assert_compile(
+ q,
+ "SELECT addresses.id AS addresses_id, addresses.user_id "
+ "AS addresses_user_id, addresses.email_address AS "
+ "addresses_email_address FROM addresses WHERE "
+ "addresses.user_id = (SELECT users.id AS users_id "
+ "FROM users WHERE users.id = :id_1)"
+ )
def test_named_subquery(self):
User = self.classes.User
q = session.query(User.id).filter(User.id==7).label('foo')
self.assert_compile(
session.query(q),
- "SELECT (SELECT users.id FROM users WHERE users.id = :id_1) AS foo",
- use_default_dialect=True
+ "SELECT (SELECT users.id FROM users WHERE users.id = :id_1) AS foo"
)
def test_as_scalar(self):
'SELECT users.id AS users_id, users.name '
'AS users_name FROM users WHERE users.id '
'IN (SELECT users.id FROM users WHERE '
- 'users.id = :id_1)',
- use_default_dialect=True)
+ 'users.id = :id_1)')
def test_param_transfer(self):
self.assert_compile(
select([q1]),
"SELECT users_id, users_name FROM (SELECT users.id AS users_id, "
- "users.name AS users_name FROM users WHERE users.name = :name_1)",
- dialect=default.DefaultDialect()
+ "users.name AS users_name FROM users WHERE users.name = :name_1)"
)
def test_join(self):
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword],
- (eagerload(Item.keywords), ),
+ (joinedload(Item.keywords), ),
r"Can't find property 'keywords' on any entity specified "
r"in this Query. Note the full path from root "
r"\(Mapper\|Keyword\|keywords\) to target entity must be specified."
Item = self.classes.Item
self._assert_eager_not_found_exception(
[Item],
- (eagerload("foo"), ),
+ (joinedload("foo"), ),
r"Can't find property named 'foo' on the mapped "
r"entity Mapper\|Item\|items in this Query."
)
Item = self.classes.Item
self._assert_eager_not_found_exception(
[Item],
- (eagerload("keywords.foo"), ),
+ (joinedload("keywords.foo"), ),
r"Can't find property named 'foo' on the mapped entity "
r"Mapper\|Keyword\|keywords in this Query."
)
Item = self.classes.Item
self._assert_eager_not_found_exception(
[Item],
- (eagerload_all("keywords.foo"), ),
+ (joinedload_all("keywords.foo"), ),
r"Can't find property named 'foo' on the mapped entity "
r"Mapper\|Keyword\|keywords in this Query."
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword, Item],
- (eagerload_all("keywords"), ),
+ (joinedload_all("keywords"), ),
r"Attribute 'keywords' of entity 'Mapper\|Keyword\|keywords' "
"does not refer to a mapped entity"
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword, Item],
- (eagerload_all("keywords"), ),
+ (joinedload_all("keywords"), ),
r"Attribute 'keywords' of entity 'Mapper\|Keyword\|keywords' "
"does not refer to a mapped entity"
)
Item = self.classes.Item
self._assert_eager_not_found_exception(
[Item],
- (eagerload_all("id", "keywords"), ),
+ (joinedload_all("id", "keywords"), ),
r"Attribute 'id' of entity 'Mapper\|Item\|items' does not "
r"refer to a mapped entity"
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword, Item],
- (eagerload_all("id", "keywords"), ),
+ (joinedload_all("id", "keywords"), ),
r"Attribute 'id' of entity 'Mapper\|Keyword\|keywords' "
"does not refer to a mapped entity"
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword, Item],
- (eagerload_all("description"), ),
+ (joinedload_all("description"), ),
r"Can't find property named 'description' on the mapped "
r"entity Mapper\|Keyword\|keywords in this Query."
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword.id, Item.id],
- (eagerload_all("keywords"), ),
+ (joinedload_all("keywords"), ),
r"Query has only expression-based entities - can't find property "
"named 'keywords'."
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword, Item],
- (eagerload_all(Keyword.id, Item.keywords), ),
+ (joinedload_all(Keyword.id, Item.keywords), ),
r"Attribute 'Keyword.id' of entity 'Mapper\|Keyword\|keywords' "
"does not refer to a mapped entity"
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword, Item],
- (eagerload_all(Keyword.keywords, Item.keywords), ),
+ (joinedload_all(Keyword.keywords, Item.keywords), ),
r"Attribute 'Keyword.keywords' of entity 'Mapper\|Keyword\|keywords' "
"does not refer to a mapped entity"
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Keyword.id, Item.id],
- (eagerload_all(Keyword.keywords, Item.keywords), ),
+ (joinedload_all(Keyword.keywords, Item.keywords), ),
r"Query has only expression-based entities - "
"can't find property named 'keywords'."
)
Keyword = self.classes.Keyword
self._assert_eager_not_found_exception(
[Item],
- (eagerload_all(Keyword), ),
+ (joinedload_all(Keyword), ),
r"mapper option expects string key or list of attributes"
)
Item = self.classes.Item
q = create_session().query(*entity_list).\
- options(eagerload(option))
+ options(joinedload(option))
key = ('loaderstrategy', (class_mapper(Item), 'keywords'))
assert key in q._attributes
eager_option, message):
assert_raises_message(sa.exc.ArgumentError, message,
create_session().query(column).options,
- eagerload(eager_option))
+ joinedload(eager_option))