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的文档,感觉很好很强大。该封装的都封装了。

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值