hey terrific !  i would not have found this one since i only have  
mysql 5.0 installed.  this patch is committed in 1768, thanks for the  
effort !

On Aug 7, 2006, at 2:40 PM, Andrius Armonas wrote:

> Hi Michael,
>
> after tracing down the issue, I've a fix for it now. The problem  
> was not in reflecttable(). It was in moretableinfo() in mysql.py.
>
> This a diff for mysql.py (not an elegant solution though):
>
> 361c361,365
> <         desc = c.fetchone()[1].strip()
> ---
> >         desc_fetched = c.fetchone()[1]
> >         if type(desc_fetched) is not str:
> >             # may get array.array object here
> >             desc_fetched = desc_fetched.tostring()
> >         desc = desc_fetched.strip()
>
> Here are some explanations:
>
> I have been testing on two machines, one running MySQL 4.1.11 and  
> the other MySQL 4.1.14. Python mysql library linked to  
> libmysqlclient_r.so.15 on client machine:
>
> # ldd /usr/lib/python2.4/site-packages/_mysql.so
>         linux-gate.so.1 =>  (0xffffe000)
>         libmysqlclient_r.so.15 => /usr/lib/libmysqlclient_r.so.15  
> (0xa7e27000)
>         libz.so.1 => /usr/lib/libz.so.1 (0xa7e13000)
>         libpthread.so.0 => /lib/tls/libpthread.so.0 (0xa7e01000)
>         libcrypt.so.1 => /lib/tls/libcrypt.so.1 (0xa7dd3000)
>         libnsl.so.1 => /lib/tls/libnsl.so.1 (0xa7dbc000)
>         libm.so.6 => /lib/tls/libm.so.6 (0xa7d96000)
>         libc.so.6 => /lib/tls/libc.so.6 (0xa7c5e000)
>         /lib/ld-linux.so.2 (0x75555000)
>
> After adding 2 lines to moretableinfo() to print c.fetchone()[1]  
> and its type, we have such results for server running MySQL 4.1.14:
>
> >>> from sqlalchemy import *
> >>> engine = create_engine("mysql://...")
> >>> meta = BoundMetaData(engine)
> >>> wTable = Table('WMSWarehouses', meta, autoload=True)
> array('c', "CREATE TABLE `WMSWarehouses` (\n  `WarehouseID` int(10)  
> unsigned NOT NULL auto_increment,\n  `WarehouseCode` varchar(25)  
> collate utf8_lithuanian_ci NOT NULL default '',\n  `WarehouseName`  
> varchar(200) collate utf8_lithuanian_ci NOT NULL default '',\n   
> `WarehouseLocation` text collate utf8_lithuanian_ci,\n   
> `WebServicesURL` varchar(200) collate utf8_lithuanian_ci NOT NULL  
> default '',\n  `WarehouseType` enum('CENTRAL','PERIPHERAL') collate  
> utf8_lithuanian_ci NOT NULL default 'CENTRAL',\n   
> `IsIndependentDistr` tinyint(1) NOT NULL default '0',\n  
> `InvoiceSeries` varchar(3) collate utf8_lithuanian_ci NOT NULL  
> default '',\n  `PackingListSeries` varchar(3) collate  
> utf8_lithuanian_ci NOT NULL default '',\n   
> `PreliminaryInvoiceSeries` varchar(3) collate utf8_lithuanian_ci  
> NOT NULL default '',\n  `ExcDiscount` double(12,2) NOT NULL default  
> '0.00',\n  `EcoDiscount` double(12,2) NOT NULL default '0.00',\n   
> `RecomPriceDiscount` double(12,2) NOT NULL default '0.00',\n   
> `OwnerGroup` varchar(100) collate utf8_lithuanian_ci NOT NULL  
> default '',\n  `Details` text collate utf8_lithuanian_ci NOT NULL, 
> \n `PresentWarehouseID` int(10) unsigned default NULL,\n  PRIMARY  
> KEY (`WarehouseID`),\n  UNIQUE KEY `WarehouseCode`  
> (`WarehouseCode`),\n  KEY `WarehouseType` (`WarehouseType`),\n  KEY  
> `InvoiceSeries` (`InvoiceSeries`),\n  KEY `PackingListSeries`  
> (`PackingListSeries`),\n KEY `PreliminaryInvoiceSeries`  
> (`PreliminaryInvoiceSeries`),\n  KEY `IsIndependentDistr`  
> (`IsIndependentDistr`),\n  KEY `PresentWarehouseID`  
> (`PresentWarehouseID`),\n  CONSTRAINT `WMSWarehouses_ibfk_1`  
> FOREIGN KEY (`PresentWarehouseID`) REFERENCES `WMSWarehouses`  
> (`WarehouseID`) ON UPDATE CASCADE\n) ENGINE=InnoDB DEFAULT  
> CHARSET=utf8 COLLATE=utf8_lithuanian_ci")
> <type 'array.array'>
>             ^
>             |
>      we have array.array object here instead of str object
>
> Results for server running MySQL 4.1.11:
>
> >>> from sqlalchemy import *
> >>> engine = create_engine("mysql://...")
> >>> meta = BoundMetaData(engine)
> >>> wTable = Table('WMSWarehouses', meta, autoload=True)
> CREATE TABLE `WMSWarehouses` (
>   `WarehouseID` int(10) unsigned NOT NULL auto_increment,
>   `WarehouseCode` varchar(25) collate utf8_lithuanian_ci NOT NULL  
> default '',
>   `WarehouseName` varchar(200) collate utf8_lithuanian_ci NOT NULL  
> default '',
>   `WarehouseLocation` text collate utf8_lithuanian_ci,
>   `WebServicesURL` varchar(200) collate utf8_lithuanian_ci NOT NULL  
> default '',
>   `WarehouseType` enum('CENTRAL','PERIPHERAL') collate  
> utf8_lithuanian_ci NOT NULL default 'CENTRAL',
>   `IsIndependentDistr` tinyint(1) NOT NULL default '0',
>   `InvoiceSeries` varchar(3) collate utf8_lithuanian_ci NOT NULL  
> default '',
>   `PackingListSeries` varchar(3) collate utf8_lithuanian_ci NOT  
> NULL default '',
>   `PreliminaryInvoiceSeries` varchar(3) collate utf8_lithuanian_ci  
> NOT NULL default '',
>   `ExcDiscount` double(12,2) NOT NULL default '0.00',
>   `EcoDiscount` double(12,2) NOT NULL default '0.00',
>   `RecomPriceDiscount` double(12,2) NOT NULL default '0.00',
>   `OwnerGroup` varchar(100) collate utf8_lithuanian_ci NOT NULL  
> default '',
>   `Details` text collate utf8_lithuanian_ci NOT NULL,
>   `PresentWarehouseID` int(10) unsigned default NULL,
>   PRIMARY KEY  (`WarehouseID`),
>   UNIQUE KEY `WarehouseCode` (`WarehouseCode`),
>   KEY `WarehouseType` (`WarehouseType`),
>   KEY `InvoiceSeries` (`InvoiceSeries`),
>   KEY `PackingListSeries` (`PackingListSeries`),
>   KEY `PreliminaryInvoiceSeries` (`PreliminaryInvoiceSeries`),
>   KEY `IsIndependentDistr` (`IsIndependentDistr`),
>   KEY `PresentWarehouseID` (`PresentWarehouseID`)
> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci
> <type 'str'>
>         ^
>         |
>
> So the patch seems to be quite obvious.
>
> --
> Andrius
>
>
> Michael Bayer wrote:
>> i havent forgotten about this one yet, theres probably some probs   
>> with the regexp in mysql.py that was recently changed to receive   
>> foreign key constraints differently.  just need to create this  
>> table  on this end and run it.  in the meantime, feel free to  
>> check out  reflecttable() in mysql.py if you have some resources  
>> to spare.
>> On Aug 1, 2006, at 1:26 AM, Andrius Armonas wrote:
>>> Hi,
>>>
>>> here we go with full CREATE statement for the table:
>>>
>>> CREATE TABLE `WMSWarehouses` (
>>>  `WarehouseID` int(10) unsigned NOT NULL auto_increment,
>>>  `WarehouseCode` varchar(25) collate utf8_lithuanian_ci NOT NULL   
>>> default '',
>>>  `WarehouseName` varchar(200) collate utf8_lithuanian_ci NOT  
>>> NULL  default '',
>>>  `WarehouseLocation` text collate utf8_lithuanian_ci,
>>>  `WebServicesURL` varchar(200) collate utf8_lithuanian_ci NOT  
>>> NULL  default '',
>>>  `WarehouseType` enum('CENTRAL','PERIPHERAL') collate   
>>> utf8_lithuanian_ci NOT NULL default 'CENTRAL',
>>>  `IsIndependentDistr` tinyint(1) NOT NULL default '0',
>>>  `InvoiceSeries` varchar(3) collate utf8_lithuanian_ci NOT NULL   
>>> default '',
>>>  `PackingListSeries` varchar(3) collate utf8_lithuanian_ci NOT  
>>> NULL  default '',
>>>  `PreliminaryInvoiceSeries` varchar(3) collate  
>>> utf8_lithuanian_ci  NOT NULL default '',
>>>  `ExcDiscount` double(12,2) NOT NULL default '0.00',
>>>  `EcoDiscount` double(12,2) NOT NULL default '0.00',
>>>  `RecomPriceDiscount` double(12,2) NOT NULL default '0.00',
>>>  `OwnerGroup` varchar(100) collate utf8_lithuanian_ci NOT NULL   
>>> default '',
>>>  `Details` text collate utf8_lithuanian_ci NOT NULL,
>>>  `PresentWarehouseID` int(10) unsigned default NULL,
>>>  PRIMARY KEY  (`WarehouseID`),
>>>  UNIQUE KEY `WarehouseCode` (`WarehouseCode`),
>>>  KEY `WarehouseType` (`WarehouseType`),
>>>  KEY `InvoiceSeries` (`InvoiceSeries`),
>>>  KEY `PackingListSeries` (`PackingListSeries`),
>>>  KEY `PreliminaryInvoiceSeries` (`PreliminaryInvoiceSeries`),
>>>  KEY `IsIndependentDistr` (`IsIndependentDistr`),
>>>  KEY `PresentWarehouseID` (`PresentWarehouseID`),
>>>  CONSTRAINT `WMSWarehouses_ibfk_1` FOREIGN KEY   
>>> (`PresentWarehouseID`) REFERENCES `WMSWarehouses`  
>>> (`WarehouseID`)  ON UPDATE CASCADE
>>> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci
>>>
>>> Thanks,
>>> -- 
>>> Andrius
>>>
>>>
>>> Michael Bayer wrote:
>>>
>>>> need to show us the full CREATE statement for the table,as  
>>>> theres  something about it which is not supported; autoloading  
>>>> with MySQL  works in the general case.
>>>>
>>>> On Jul 31, 2006, at 9:09 AM, Andrius Armonas wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> autoload feature doesn't seem to work properly. Calling Table(...,
>>>>> autoload=True) for the first time raises AttributeError error,   
>>>>> and for
>>>>> the second time - no errors seen.
>>>>>
>>>>> What I'm doing is:
>>>>>
>>>>> fire:~$ python2.4
>>>>> Python 2.4.4c0 (#2, Jun 14 2006, 22:35:41)
>>>>> [GCC 4.1.2 20060613 (prerelease) (Debian 4.1.1-4)] on linux2
>>>>> Type "help", "copyright", "credits" or "license" for more   
>>>>> information.
>>>>>
>>>>>>>> from sqlalchemy import *
>>>>>>>> engine = create_engine("mysql://...")
>>>>>>>> meta = BoundMetaData(engine)
>>>>>>>> wTable = Table('WMSWarehouses', meta, autoload=True)
>>>>>
>>>>> Traceback (most recent call last):
>>>>>   File "<stdin>", line 1, in ?
>>>>>   File "build/bdist.linux-i686/egg/sqlalchemy/schema.py", line   
>>>>> 97, in
>>>>> __call__
>>>>>   File "build/bdist.linux-i686/egg/sqlalchemy/engine/base.py",   
>>>>> line 488,
>>>>> in reflecttable
>>>>>   File "build/bdist.linux-i686/egg/sqlalchemy/databases/  
>>>>> mysql.py", line
>>>>> 345, in reflecttable
>>>>>   File "build/bdist.linux-i686/egg/sqlalchemy/databases/  
>>>>> mysql.py", line
>>>>> 361, in moretableinfo
>>>>> AttributeError: 'array.array' object has no attribute 'strip'
>>>>>
>>>>>>>> wTable = Table('WMSWarehouses', meta, autoload=True)
>>>>>>>> wTable.name
>>>>>
>>>>> 'WMSWarehouses'
>>>>>
>>>>> As said, using MySQL 4.1, SA 0.2.6.
>>>>>
>>>>> Any help?
>>>>>
>>>>> Thanks,
>>>>> -- 
>>>>> Andrius
>>>>>
>>>>> ------------------------------------------------------------------ 
>>>>> -- -----
>>>>> Take Surveys. Earn Cash. Influence the Future of IT
>>>>> Join SourceForge.net's Techsay panel and you'll get the chance  
>>>>> to  share your
>>>>> opinions on IT & business topics through brief surveys -- and   
>>>>> earn cash
>>>>> http://www.techsay.com/default.php?  
>>>>> page=join.php&p=sourceforge&CID=DEVDEV
>>>>> _______________________________________________
>>>>> Sqlalchemy-users mailing list
>>>>> Sqlalchemy-users@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users
>>>
>>>
>


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to