Christopher Eckman wrote:
> Hi Marc-Andre,
> 
> Thank you very much for the suggestion.  I tried mxODBC and it behaved in a 
> similiar manner as the plain odbc module.  I don't think the ODBC driver 
> itself is the problem itself though as if I run Microsoft Query, select that 
> exact same DSN and execute the query it will give the expected results 
> (concatenates the operators into the operator field).

I'd have to see the log of a mxODBC debug build to comment on that.

Note that ODBC has various ways of accessing data. It is possible
that MS Query uses a different way of asking for the relevant data
than mxODBC - one which doesn't trigger the problem in the driver.

The None value is only returned if the driver sends the special
SQL_NULL_DATA field length value, so something in the chain is
setting this value explicitly.

> The main reason I tried to do this in SQL is that I have a number of queries 
> in a report dictionary.  It gets the query associated to a given report, runs 
> it and makes a .csv out of them.  I was trying to avoid putting in special 
> handlers for any of the reports (all the others work without me doing any 
> query specific handling).  At the time I did not know this query would prove 
> to be so difficult to handle.  The secondary reason is that I am the only 
> person that familiar with Python here on this gig.  Most all of the people on 
> my team are pretty decent with SQL.

Fair enough :-) BTW, what does substring() return if you pass it
a -1 as third argument ?

> Thanks,
> 
> --Chris
> 
> ----- Original Message ----
> From: M.-A. Lemburg <[EMAIL PROTECTED]>
> To: Christopher Eckman <[EMAIL PROTECTED]>
> Cc: db-sig@python.org
> Sent: Monday, November 27, 2006 4:42:06 PM
> Subject: Re: [DB-SIG] Question on odbc with cross apply and for xml...
> 
> Christopher Eckman wrote:
>> Hi all,
>>
>> I am doing a select to concatenate a number of entries into a field like 
>> this under 'operators' (sample header is the first line):
>> name    company    uis_access_control    uis_tp_ticketpassing          
>> operators    
>> UNINA   FOO          unrestricted               No                           
>>         uni-catherine_srvage,uni-robert_woyzik,uni-susan_fooman    
>>
>> using the SQL Server functionality cross apply and for xml.  Sample select 
>> is below:
>>
>> select support_group_name "name", sg.Company "company", sg.f5 
>> "uis_access_control", sg.f6 "uis_tp_ticketpassing",  sg.REZ_Manager 
>> "manager",
>>             substring(memberList, 1, datalength(memberList)/2 - 1) 
>> "operators"
>>             -- strip the last ',' from the list
>>      from
>>        ctm_support_group sg cross apply
>>        (select convert(nvarchar(60), sgm.support_group_member_name) + ',' as 
>> [text()]
>>         from tsmi_support_group_members sgm
>>         where sg.Support_Group_ID = sgm.Support_Group_ID and sg.Company = 
>> 'UNINA' and sg.support_group_name like 'UNI-NA%'
>>         order by support_group_name
>>         for xml path('')) as Dummy(memberList)
>>      go  
>>
>> The problem is when I call this via dbi and odbc it will always put 'None' 
>> for operators even though if I do this in TOAD or MS Query it will pull the 
>> correct values?  I tried to get around this by making this a stored 
>> procedure but the behavior is the same.  Is there something I am missing?  I 
>> am calling this with the typical 
>>
>> cursor.execute(sample_query)
>> for row in cursor.fetchall()...
>>
>> Any help would be appreciated.
> 
> You could try this with mxODBC to see whether it's a problem related to
> the ODBC driver or not.
> 
> Note that string processing such as what you are applying to the
> "operators" is much better done in Python than at the SQL level.
> 

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Nov 28 2006)
>>> Python/Zope Consulting and Support ...        http://www.egenix.com/
>>> mxODBC.Zope.Database.Adapter ...             http://zope.egenix.com/
>>> mxODBC, mxDateTime, mxTextTools ...        http://python.egenix.com/
________________________________________________________________________

::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::
_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to