`
phyeas
  • 浏览: 161496 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

SQLAlchemy与Python3.0

阅读更多

今天开始学习SQLAlchemy,我用的是python3,所以,首先得让他能在python3上运行。看了下官方网站的介绍,SQLAlchemy准备从0.6版开始支持python3(http://www.sqlalchemy.org/download.html),但现在的0.6还在开发阶段,能正式下载到的只有0.5.3,要下0.6需要通过svn。

SVN地址:http://svn.sqlalchemy.org/sqlalchemy/branches/rel_0_6

其实里面的代码还是python2.x的代码,但SQLAlchemy的包中提供了转换工具(相信正式出来的时候应该不需要转换了)。下载完后执行转换命令:python sa2to3.py -w SQLAlchemy存放目录/lib/SQLAlchemy

必须加-w参数,否则是不会执行转换的,只是输出需要转换的代码

执行完成后执行:python setup.py install进行安装,如果安装不成功请确认转换是否已完成。

这就OK了,测试:

>>> import sqlalchemy

>>> sqlalchemy.__version__

如果输出0.5.3就说明成功了(版本号还没改成0.6)

有一个地方需要注意以下的是:在使用metadata.drop_all(engine)时会报异常,主要是SQLAlchemy在engine/base.py中写了这么一行代码:colname = colname.decode(self.dialect.description_encoding),其中colname是str类型的,在python3中str类型已经去掉了decode方法,改成:colname = colname.encode("ISO-8859-1").decode(self.dialect.description_encoding)即可。其他地方还有没有我还不知道,不过但凡说找不到encode方法的都这么改就可以了。其原理是先将str转换为ISO-8859-1编码的bytes,再转换为指定编码的字符串,当然,这是很卑劣的手段,如果原始编码不是ISO-8859-1会报错,期待0.6版本中能改进这个错误,到这一步,基本上SQLAlchemy就能在python3中使用了,还有其他什么问题欢迎一起探讨,共同进步。

粗略地看了一下SQLAlchemy的文档,感觉很好很强大。该封装的都封装了。

 

可以下载我的测试代码去试试。

分享到:
评论
2 楼 bohemia 2009-07-10  
0.5.3就说明成功了(版本号还没改成0.6)

Python的ORM,WEB框架快快成熟啊. 每天看到0.**的版本号,都有一丝寒意.
1 楼 phyeas 2009-07-09  
在最新的sqlalchemy0.6版本中已经将版本号改为0.6 beta1
sqlalchemy.__version__将返回:'0.6beta1'

相关推荐

Global site tag (gtag.js) - Google Analytics