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