小编Nic*_*den的帖子

SQLAlchemy版本控制关注类导入顺序

我在这里关注指南:

http://www.sqlalchemy.org/docs/orm/examples.html?highlight=versioning#versioned-objects

并遇到了一个问题.我已经定义了我的关系:

generic_ticker = relation('MyClass', backref=backref("stuffs"))
Run Code Online (Sandbox Code Playgroud)

使用字符串,因此它不关心我的模型模块的导入顺序.这一切都正常,但是当我使用版本控制元时,我收到以下错误:

sqlalchemy.exc.InvalidRequestError:初始化映射器Mapper | MyClass | stuffs时,表达式"Trader"找不到名称("name'MyClass'未定义").如果这是类名,请考虑在定义了两个依赖类之后将此关系()添加到类中.

我将错误追踪到:

  File "/home/nick/workspace/gm3/gm3/lib/history_meta.py", line 90, in __init__
    mapper = class_mapper(cls)
  File "/home/nick/venv/tg2env/lib/python2.6/site-packages/sqlalchemy/orm/util.py", line 622, in class_mapper
    mapper = mapper.compile()
Run Code Online (Sandbox Code Playgroud)
class VersionedMeta(DeclarativeMeta):
    def __init__(cls, classname, bases, dict_):
        DeclarativeMeta.__init__(cls, classname, bases, dict_)

        try:
            mapper = class_mapper(cls)
            _history_mapper(mapper)
        except UnmappedClassError:
            pass
Run Code Online (Sandbox Code Playgroud)

我通过将try:除了lambda中的东西并在所有导入发生之后运行它们来修复问题.这有效,但似乎有点垃圾,任何想法如何解决这个是一个更好的方法?

谢谢!

更新

问题实际上不是关于进口订单.版本控制示例的设计使得映射器需要在每个版本化类的costructor中进行编译.当相关类尚未定义时,编译失败.在循环关系的情况下,无法通过更改映射类的定义顺序使其工作.

更新2

正如上面的更新所述(我不知道你可以在这里编辑其他人的帖子:))这可能是由于循环引用.在这种情况下可能有人会发现我的hack有用(我正在使用它与turbogears)(替换VersionedMeta并在history_meta中添加create_mappers全局)

create_mappers = []
class VersionedMeta(DeclarativeMeta):
    def __init__(cls, classname, bases, dict_):
        DeclarativeMeta.__init__(cls, classname, bases, dict_)
        #I added this code in as it was crashing …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

110
推荐指数
1
解决办法
6279
查看次数

使用SQLAlchemy ORM批量插入

有没有办法让SQLAlchemy进行批量插入而不是插入每个单独的对象.即

这样做的:

INSERT INTO `foo` (`bar`) VALUES (1), (2), (3)
Run Code Online (Sandbox Code Playgroud)

而不是:

INSERT INTO `foo` (`bar`) VALUES (1)
INSERT INTO `foo` (`bar`) VALUES (2)
INSERT INTO `foo` (`bar`) VALUES (3)
Run Code Online (Sandbox Code Playgroud)

我刚刚转换了一些代码来使用sqlalchemy而不是原始的sql,虽然它现在更好用,但它现在看起来更慢(高达10倍),我想知道这是否是原因.

也许我可以更有效地使用会话来改善这种情况.在我添加了一些东西之后,我autoCommit=False现在做了一件事session.commit().虽然这似乎导致数据在其他地方更改数据库时变得陈旧,即使我做了一个新的查询,我仍然会得到旧的结果?

谢谢你的帮助!

python mysql database orm sqlalchemy

104
推荐指数
9
解决办法
9万
查看次数

Eclipse(Indigo)颠覆0.7.9:bad_record_mac

当我尝试使用我的beanstalk svn repo(https://beanstalkapp.com)颠覆时,我得到以下类型的错误:

Some of selected resources were not committed.
svn: Commit failed (details follow):
svn: Received fatal alert: bad_record_mac
Run Code Online (Sandbox Code Playgroud)

这可以通过命令行工作,只是没有eclipse或颠覆性的svn插件.我已经读到它与不允许旧版本的SSL有关,但无法在eclipse中找到任何修复方法.

谢谢!

eclipse svn ssl subversive eclipse-plugin

5
推荐指数
1
解决办法
2308
查看次数

标签 统计

python ×2

sqlalchemy ×2

database ×1

eclipse ×1

eclipse-plugin ×1

mysql ×1

orm ×1

ssl ×1

subversive ×1

svn ×1