10

我从 Elixir 和 SQL Alchemy 开始。我已经创建了一个与 Mysql 数据库连接的 python 文件,但是一旦我使用 python 执行,我就会收到以下错误:

root@raspberrypi:/Python/mainFlask/yonkiPOPS# python yonki.py
Traceback (most recent call last):
  File "yonki.py", line 1, in <module>
    from elixir import metadata, Entity, Field
  File "/usr/local/lib/python2.7/dist-packages/Elixir-0.7.1-py2.7.egg/elixir/__init__.py", line 29, in <module>
    from elixir.entity import Entity, EntityBase, EntityMeta, EntityDescriptor, \
  File "/usr/local/lib/python2.7/dist-packages/Elixir-0.7.1-py2.7.egg/elixir/entity.py", line 17, in <module>
    from sqlalchemy.orm import MapperExtension, mapper, object_session, \
ImportError: cannot import name ScopedSession

我一直在寻找它,但我找不到原因。这是 yonki.py 文件:

                                                                                                                                                                                                                                                                            from elixir import metadata, Entity, Field
from elixir import Unicode, UnicodeText   
from elixir import *
class User(Entity): 
        username = Field(String(64))

metadata.bind = 'mysql://root:nomasandroid42@localhost/yonkiPOPS'
session.bind.echo = True
setup_all()
create_all()

我认为这可能是由于未安装所需的模块,但我不知道是哪一个。

4

4 回答 4

15

Elixir 0.7.1 似乎与最新版本的 SQLalchemy 0.8 不兼容。你可以解决这个问题

sudo pip install SQLAlchemy==0.7.8
于 2013-01-12T07:29:15.610 回答
7

只需打开 ./elixir/entity.py,找到如下的导入行:

from sqlalchemy.orm import ScopedSession, \

然后将其调整为:

from sqlalchemy.orm import scoped_session as ScopedSession, \
于 2013-07-29T03:25:42.620 回答
2

好像 sqlalchemy 0.8 改变了 ScopedSession 的位置

http://elixir.ematia.de/trac/ticket/121

于 2013-05-27T18:45:58.633 回答
1

如果您仍然无法从存储库更新您的库,或者没有 root 访问权限来更改文件,只需在您的文件中使用它:

import sqlalchemy.orm
sqlalchemy.orm.ScopedSession = sqlalchemy.orm.scoped_session

from elixir import *
于 2014-07-01T09:39:12.083 回答