WEB开发网
开发学院软件开发Python ironpython 和sqlalchemy 阅读

ironpython 和sqlalchemy

 2008-11-10 13:22:07 来源:WEB开发网   
核心提示:首先是试着用ironpython 跑sqlalchemy1. 第一个问题是出在__solt__对于python私有变量的解释python对私有变量约定用__开头,实际中,ironpython 和sqlalchemy,它被存储为_ClassName__variablename ,ironpython 在__solt__中

首先是试着用ironpython 跑sqlalchemy 

1. 第一个问题是出在__solt__对于python私有变量的解释

python对私有变量约定用__开头,实际中,它被存储为_ClassName__variablename ,ironpython 在__solt__中说明时需要用实际存储的变量名

修改pool.py 中的

class _ConnectionFairy(object):

"""Proxies a DB-API connection and provides return-on-dereference support."""

__slots__ = '_pool', '_ConnectionFairy__counter', 'connection', '_connection_record', '__weakref__', '_detached_info'

同样的问题还在_CursorFairy类中

class _CursorFairy(object):

__slots__ = '_CursorFairy__parent', 'cursor', 'execute'

2. echo=True启用log时出现

ValueError: _getframe is not implemented for non-zero depth

用echo=False逃过

3.autoload=True时出现Key errors

不使用autoload

在接下来的测试中出现了不少错误,如

select([categories.c.id,categories.c.name,func.count(products.c.id)],from_obj=[categories.join(products)]).group_by(categories.c.id,categories.c.name)

这个func.count 通不过,提示key error ,这个错误出现的概率还是停多的

然后试着用jython 跑sqlalchemy ,使用了http://fwierzbicki.blogspot.com/2007/07/sqlalchemy-mysql-and-jython.html 这里的实现,修改了logging/util.Set两个地方

但显然,生成的sql 有问题,像上面的 from 部分 是 from core_category ,core_product ,core_category inner join core_product

接着继续折腾zxJDBC ,这个是python的jdbc 的 dbapi实现,试了ms的sql server jdbc驱动,在select * from core_category 就出错,经查看是nvarchar的输出问题,如果单独使用jdbc ,这个问题是不存在

Tags:ironpython sqlalchemy

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接