Thanks again. The select.c collection may also contain ColumnClauses. I can see there's enough info in the to contruct Column() objects to be used in a new Table() object but is there a proper/recommended way to 'cast' it to a Column or something the Table() accepts?
On Jun 9, 2:23 pm, Michael Bayer <[email protected]> wrote: > On Jun 9, 2012, at 4:24 AM, CJ Lee wrote: > > > Thanks Michael, > > Does anyone know a way of retrieving column info from a select > > statement? > > my eventual goal is: mimic a 'select into..' or a 'create table t as > > select...' from one database / engine into another. > > my strategy is to > > 1. execute a select on engine1. > > 2. get result Column metadata from resultProxy > > 3. create table with that metadata in engine2 > > 4. using resultproxy insert into new table > > > I can't figure out step2. > > I can see resultproxy.context.result_map seems to have a list of > > tuples that bear that info but it feels a little hacky. > > The way this is done is to just reuse the same Table object with both > databases. When you "execute a select", the select() construct there is > where you get the column/type information from. > > As far as result proxy, you can get the names of the keys using > result.keys(), and if you wanted, the DBAPI's view of this from a SELECT > statement using result.cursor.description, but the SQLAlchemy-level > information is all passed in to the execute() method. It might not be a bad > idea to add accessors to ResultProxy for this too, but it would just be > pointing to the select() in any case. > > That is: > > for key in resultproxy.keys(): > column = my_select_statement.c[key] > > > > > > > > > > > On Jun 8, 1:45 pm, Michael Bayer <[email protected]> wrote: > >> postfetch_cols() only applies to INSERT and UPDATE statements where > >> defaults might have been fired off. Currently the execution context > >> doesn't take the step of placing a blank collection (or raising an error) > >> in the case of statements where this collection does not apply. > > >> On Jun 8, 2012, at 7:24 AM, CJ Lee wrote: > > >>> I've looked in the source sqlalchemy/engine/base.py under the class > >>> ExecutionContext and it does not contain this methodpostfetch_cols() > >>> as documented. I've checked in 0.7.7, 0.6.9 stable versions as well as > >>> 0.8 am I being silly and missing something? > > >>> Details here: > >>>http://stackoverflow.com/questions/10924160/sqlalchemy-executionconte... > > >>> -- > >>> You received this message because you are subscribed to the Google Groups > >>> "sqlalchemy" group. > >>> To post to this group, send email to [email protected]. > >>> To unsubscribe from this group, send email to > >>> [email protected]. > >>> For more options, visit this group > >>> athttp://groups.google.com/group/sqlalchemy?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "sqlalchemy" group. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
