锁定老帖子 主题:SQLAlchemy与Python3.0
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-26
最后修改:2009-04-26
今天开始学习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的文档,感觉很好很强大。该封装的都封装了。
可以下载我的测试代码去试试。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-07-09
在最新的sqlalchemy0.6版本中已经将版本号改为0.6 beta1
sqlalchemy.__version__将返回:'0.6beta1' |
|
返回顶楼 | |
发表时间:2009-07-10
0.5.3就说明成功了(版本号还没改成0.6)
Python的ORM,WEB框架快快成熟啊. 每天看到0.**的版本号,都有一丝寒意. |
|
返回顶楼 | |
浏览 4809 次