That doesn't look like terribly idiomatic sqlalchemy. You already have a Table object you're using to build your query, you can also use it to express the predicates in the generated WHERE clause, even dynamically:
date = '01.01.2011'
from_date = dt.datetime.strptime(date, "%d.%m.%Y").date()
q = session.query(Table) \
.filter(Table.c[nm].like('%%%s%%' % val) ) \
.filter(Table.c[ft] > from_date)
If anything, this is the main advantage of using sqlalchemy.
This pattern extends to almost every corner of sqlalchemy, for instance, if you must specify which table to select from in a dynamic fashion, this can be handled by accessing the MetaData.tables property, which is also a dict.
If you really need the full generality of expressiveness exposed to the user, you probably will be better served by just allowing them to enter SQL statements, Mixing the generative queries in the style of sqlalchemy with user entered expressions is probably not going to help you or your users. You could possibly use SQLalchemy to generate skeleton queries and then let users edit them to customize them in the ways they need.
q = Session.query(Table), notqeuery.DATEfield?