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
>>>>> [email protected]
>>>>> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users