[egenix-users] Inserting empty strings into SQL Server tables via mx.ODBC

M.-A. Lemburg mal at egenix.com
Mon Aug 9 19:16:17 CEST 2004


Charles Bearden wrote:
> I'm using mx-commercial-2.0.6, iODBC 3.51.2, and FreeTDS freetds-0.62.4
> on RH9 to talk to an MS SQL Server 2000, and 'exec sp_dbcmptlevel
> @dbname=<dbname>' returns '80' for the databases on the SQL Server.
> 
> I am trying to avoid NULLs in my columns and am finding that the empty
> string works as a substitute for almost all cases where I would have
> used a NULL in the past.  However, when I pass empty strings as values
> in the tuple second argument to the execute method (e.g.
> 'cu.execute(stmnt, tpl)'), the following exception is raised:

Have you tried the same thing on Windows using the MS SQL Server
ODBC driver ?

This is likely a problem with FreeTDS - mxODBC certainly doesn't
have problems with empty string :-)

> ----------------------------------------------------------
> (4, '2112097', '90269415', '0014-4754', '46', '5', '1990', 'May', '15',
> '', '', 'Identification of hemolytic granules isolated from human
> myocardial cells.', '495-8', 'Department of Microbiology, Fujita-gakuen
> Health University School of Medicine, Aichi, Japan.', 'eng', '',
> 'SWITZERLAND', 'Experientia', '0376547', '1990 May 15', 'Experientia.
> 1990 May 15; 46 (5): 495-8')
> 
>   INSERT INTO pmCiteTest
>   (ID, PMID, MID, ISSN, Volume, Issue, PDYear, PDMonth, PDDay, PDSeason,
>    PDMedDate, ArticleTitle, Pagination, Affiliation, Language,
> VernacularTitle,
> 
>    Country, MedlineTA, NlmUniqueID, PubDate, Cite)
>   VALUES
>   (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
> 
> Traceback (most recent call last):
>   File "./cp2mstest.py", line 42, in ?
>     cu_mx.execute(ins, tuple(r))
> mxODBC.OperationalError: ('', 1001, '[FreeTDS][SQL Server]Line 1: Length
> or precision specification 0 is invalid.', 4579)
> ----------------------------------------------------------
> 
> When the exception is raised, I print the tuple and the SQL statement
> implicated in the exception before re-raising it.  None of the columns
> in the pmCiteTest table allow NULLs.
> 
> If I change instances of the empty string in the tuple to single spaces,
> the INSERTs work.  However, I'd like to be able to insert empty strings
> passed in as parameter values.  I don't want columns that should have an
> empty string to match "LIKE ' %'" conditions, and I don't want to have
> to generate the SQL statement dynamically.  Is there a way I can pass in
> empty strings as parameter values to SQL Server through mx.ODBC?
> 
> Thanks,
> Chuck
> 
> Chuck Bearden
> Systems Analyst III
> School of Health Information Sciences
> University of Texas at Houston
> 713.500.3954 (voice)
> 713.500.3907 (fax)
> Charles.F.Bearden at uth.tmc.edu
> 
> 
> _______________________________________________________________________
> eGenix.com User Mailing List                     http://www.egenix.com/
> http://lists.egenix.com/mailman/listinfo/egenix-users

-- 
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source  (#1, Aug 09 2004)
 >>> 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 ! ::::



More information about the egenix-users mailing list