Session.add()不适用于SqlAlchemy(Python2.7)

时间:2016-01-18 23:20:38

标签: python mysql sqlalchemy add

我使用的是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()

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

为了进行测试,我将下面的代码放在一起:

print newEntity in sessionLoader()

它表示“假”'在控制台上。

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

任何提示或帮助?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我做了更改后变成了:

所以它变成了:

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

现在有效!!