【问题标题】:Session.add() does not work on SqlAlchemy(Python2.7)Session.add() 在 SqlAlchemy(Python2.7) 上不起作用
【发布时间】:2016-01-18 23:20:38
【问题描述】:

我正在使用 SqlAlchemy-1.0.9 和 python 2.7。

因此,当我尝试将对象添加到会话时,没有任何反应,因此数据不会插入数据库中。顺便说一下,我用的是mysql和oursql。

部分代码如下:

首先,我创建了一个函数来制作“创建引擎”等......每次我想创建会话时都会使用它。

base = declarative_base()

engine = create_engine('mysql+oursql://root:toor@127.0.0.1/pandora', echo=True)

def sessionLoader():
    base.metadata.bind = engine
    DBSession = sessionmaker(bind=engine)
    session = DBSession()
    return session

之后在我的课堂上调用 sessionLoader() 方法:

我创建对象等等然后使用add()方法:

newEntity = Entity(name = 'John')

sessionLoader().add(newEntity)

sessionLoader().commit()

之后控制台上没有显示错误或异常。 但是当我去数据库并进行一些选择时,那里没有数据。

为了进行测试,我输入了以下代码:

print newEntity in sessionLoader()

它在控制台上显示“False”。

所以'add()'没有做它应该做的工作。

任何提示或帮助?

【问题讨论】:

    标签: python mysql sqlalchemy add


    【解决方案1】:

    每次您拨打sessionLoader() 时,您都在创建一个新会话。代码看起来像是在一个会话中创建实体并提交另一个会话。

    【讨论】:

    • 知道了......我在创建实例后调用该方法做错了。我所做的纠正是:而不是仅在创建实体后调用“sessionLoad()”方法我在做整个事情之前“实例化”(就像我们对类所做的那样)..
    • 我使用了上面给出的答案中描述的修改...感谢提示
    【解决方案2】:

    在我进行更改后,它变成了:

    所以变成了:

    session = sessionLoader()
    newEntity = Entity(name = 'John')
    session.add(newEntity)
    session.commit()
    

    现在可以了!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 2015-10-19
      • 2017-05-15
      • 2021-04-14
      • 1970-01-01
      • 2021-11-16
      • 2015-03-04
      • 2016-04-18
      相关资源
      最近更新 更多