From: Oleg B. <ph...@ph...> - 2005-12-09 18:27:48
|
Hello! Any Informixer here? http://informixdb.sourceforge.net/ Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Mark R. <mar...@gm...> - 2005-12-11 11:03:50
|
Hi, Hoping to play with informixdb at work this week as it is our database of choice. Once I am happy it works with our test databases, I could look at integrating it with SQLObject. Regards Mark On 12/10/05, Oleg Broytmann <ph...@ph...> wrote: > Hello! > > Any Informixer here? http://informixdb.sourceforge.net/ > > Oleg. > -- > Oleg Broytmann http://phd.pp.ru/ ph...@ph... > Programmers don't die, they just GOSUB without RETURN. > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through log fi= les > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick > _______________________________________________ > sqlobject-discuss mailing list > sql...@li... > https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss > |
From: Mark R. <mar...@gm...> - 2005-12-13 01:16:15
|
Have started writing the db connection stuff for informix and have it working for simple cases. Have looked thru the SQLObject code and cannot find an exampe of how to fix an issue I am having. StringCol fields without a defined length are created as TEXT column data types. When SQLObject creates an insert statement for the table, it passes the values of these TEXT columns as python strings. The informixdb requires them to be converted to a buffer using informixdb.Binary() prior to the insert. I am sure I am missing something simple here but what do I need to do to ensure this happens. Regards Mark On 12/11/05, Mark Rees <mar...@gm...> wrote: > Hi, > > Hoping to play with informixdb at work this week as it is our database > of choice. Once I am happy it works with our test databases, I could > look at integrating it with SQLObject. > > Regards > > Mark > > On 12/10/05, Oleg Broytmann <ph...@ph...> wrote: > > Hello! > > > > Any Informixer here? http://informixdb.sourceforge.net/ > > > > Oleg. > > -- > > Oleg Broytmann http://phd.pp.ru/ phd@phd.pp.= ru > > Programmers don't die, they just GOSUB without RETURN. > > > > > > ------------------------------------------------------- > > This SF.net email is sponsored by: Splunk Inc. Do you grep through log = files > > for problems? Stop! Download the new AJAX search engine that makes > > searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! > > http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick > > _______________________________________________ > > sqlobject-discuss mailing list > > sql...@li... > > https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss > > > |
From: Mark R. <mar...@gm...> - 2005-12-14 01:17:50
|
Being an impatient individual, couldn't wait for a response :-). On more analysis there are three problems. 1. How to get a value that is a StringCol without length in a class to a buffer. Still looking for a solution that doesn't require me polluting the SQLObject code informix specific stuff. 2. By default the insert statement generated by SQLObject is a string so even if I resolve the conversion of StringCol to a Binary, it will still fail on insert.The solution I have come up with to get round this is to give my infxconnection.py it's own _insertSQL method: def _insertSQL(self, table, names, values): ''' Create an insert statement with placeholders. ''' return ("INSERT INTO %s (%s) VALUES (%s)" % (table, ', '.join(names), ', '.join(["?" for v in values]))) and then in the _queryInsertID method change the cursor execute call to: c.execute(q, values) So if I use a BLOBCol type instead of a StringCol it works. 3. Similar to problem 2 but with Update statements. As an update is done by a call to query via _SO_Update does that mean I have to add a _SO_Update method to my informix connection object to create an update statement with placeholders and do the execute in that. I am asking these questions as it doesn't "feel right" with what I am doing and I am worried that I have missed an easier way. FYI: I am doing this work in SQLObject 7.0 rather than the SVN version as it is what we use at work. Once I have it working will make changes on a checkout from the dev version. Regards Mark On 12/13/05, Mark Rees <mar...@gm...> wrote: > Have started writing the db connection stuff for informix and have it > working for simple cases. Have looked thru the SQLObject code and > cannot find an exampe of how to fix an issue I am having. StringCol > fields without a defined length are created as TEXT column data types. > When SQLObject creates an insert statement for the table, it passes > the values of these TEXT columns as python strings. The informixdb > requires them to be converted to a buffer using informixdb.Binary() > prior to the insert. I am sure I am missing something simple here but > what do I need to do to ensure this happens. > > Regards > > Mark > > On 12/11/05, Mark Rees <mar...@gm...> wrote: > > Hi, > > > > Hoping to play with informixdb at work this week as it is our database > > of choice. Once I am happy it works with our test databases, I could > > look at integrating it with SQLObject. > > > > Regards > > > > Mark > > > > On 12/10/05, Oleg Broytmann <ph...@ph...> wrote: > > > Hello! > > > > > > Any Informixer here? http://informixdb.sourceforge.net/ > > > > > > Oleg. > > > -- > > > Oleg Broytmann http://phd.pp.ru/ phd@phd.p= p.ru > > > Programmers don't die, they just GOSUB without RETURN. > > > > > > > > > ------------------------------------------------------- > > > This SF.net email is sponsored by: Splunk Inc. Do you grep through lo= g files > > > for problems? Stop! Download the new AJAX search engine that makes > > > searching your log files as easy as surfing the web. DOWNLOAD SPLUN= K! > > > http://ads.osdn.com/?ad_id=3D7637&alloc_id=3D16865&op=3Dclick > > > _______________________________________________ > > > sqlobject-discuss mailing list > > > sql...@li... > > > https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss > > > > > > |
From: Oleg B. <ph...@ph...> - 2005-12-14 15:32:36
|
Hello! On Wed, Dec 14, 2005 at 12:17:47PM +1100, Mark Rees wrote: > When SQLObject creates an insert statement for the table, it passes > the values of these TEXT columns as python strings. The informixdb > requires them to be converted to a buffer using informixdb.Binary() So it seems TEXT in Informix is actually a BLOB, right? What does DB API driver returns for TEXT columns? > 1. How to get a value that is a StringCol without length in a class to > a buffer. Don't do it with StringCols. > 2. By default the insert statement generated by SQLObject is a string I'm (very slowly) working to resolve the issue in another branch, but do not expect it'd be finished any time soon. Stick for now with string INSERTs/UPDATEs. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Mark R. <mar...@gm...> - 2005-12-14 23:37:43
|
Thanks for the response. Informix has two BLOB types - TEXT and BYTE. The Informix DBI returns a buffer for a TEXT type. Happy to use BLOBCol as a workround. How should this limitation be handled if a user creates a class with a StringCol with no length. Should SQLObject be modified to do the BLOB handling for these types when the connection is informix or should it raise an exception so the user is forced to change their class definition to either define a StringCol with a length (limited to 255) or use a BLOBCol instead. Regards Mark On 12/15/05, Oleg Broytmann <ph...@ph...> wrote: > Hello! > > On Wed, Dec 14, 2005 at 12:17:47PM +1100, Mark Rees wrote: > > When SQLObject creates an insert statement for the table, it passes > > the values of these TEXT columns as python strings. The informixdb > > requires them to be converted to a buffer using informixdb.Binary() > > So it seems TEXT in Informix is actually a BLOB, right? What does DB AP= I > driver returns for TEXT columns? > > > 1. How to get a value that is a StringCol without length in a class to > > a buffer. > > Don't do it with StringCols. > > > 2. By default the insert statement generated by SQLObject is a string > > I'm (very slowly) working to resolve the issue in another branch, but d= o > not expect it'd be finished any time soon. Stick for now with string > INSERTs/UPDATEs. > > Oleg. > -- > Oleg Broytmann http://phd.pp.ru/ ph...@ph... > Programmers don't die, they just GOSUB without RETURN. > |
From: Mark R. <mar...@gm...> - 2005-12-15 01:57:52
|
On 12/15/05, Mark Rees <mar...@gm...> wrote: > Happy to use BLOBCol as a workround. Argh, the informix DBI does do automatic translation from a string to a TEXT BLOB, you still have to create a buffer. And since standard SQLObject functionality is to create pure string INSERT's and UPDATES I am back to my original problem. So have three options, - use the a connection specific insertSQL and _SO_update methods so BLOBCol will work with placeholders. Have the code for this working great with the TurboGears wiki turtorial using informix as it's data store. - Or see if informixdb can be modified to do auto casting from string to BLOB. Yuk C code. - Or provide an informix connection that is very limited in it's support for large strings. Mark |
From: Oleg B. <ph...@ph...> - 2005-12-15 12:33:31
|
On Thu, Dec 15, 2005 at 10:37:38AM +1100, Mark Rees wrote: > Informix has two BLOB types - TEXT and BYTE. The Informix DBI returns > a buffer for a TEXT type. Hence it must be mapped to BLOBCol, not StringCol. > How should this limitation be > handled if a user creates a class with a StringCol with no length. Either forcefully set the length or raise an exception. > Argh, the informix DBI does do automatic translation from a string to > a TEXT BLOB, you still have to create a buffer. And since standard > SQLObject functionality is to create pure string INSERT's and UPDATES > I am back to my original problem. So have three options, > > - use the a connection specific insertSQL and _SO_update methods so > BLOBCol will work with placeholders. Have the code for this working > great with the TurboGears wiki turtorial using informix as it's data > store. > > - Or see if informixdb can be modified to do auto casting from string > to BLOB. Yuk C code. > > - Or provide an informix connection that is very limited in it's > support for large strings. The third way would be the best for current SQLObject. In any case BLOBCols work only with MySQL, PostgreSQL and SQLite now. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |