Ok. Here's a code as an example of my situation:
First, the file ormdb.py:
db =
create_engine('mysql+mysqlconnector://root:password@localhost/debug',paramstyle='format')
db.echo = False
Base = declarative_base()
source_databases = Table('source_databases', MetaData(bind=None))
person = Table('person', MetaData(bind=None))
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
database_id = Column(Integer,
ForeignKey('source_databases.id') )
name = Column(String)
source_database = relationship('SourceDatabase',
backref=backref('source_databases'))
def __init__(self, name=None):
self.name = name
def __repr__(self):
return self.name
class SourceDatabase(Base):
__tablename__ = 'source_databases'
id = Column(Integer, primary_key = True)
name = Column(String)
def __init__(self, name=None):
self.name = name
def __repr__(self):
return self.name
Session = sessionmaker(bind = db)
session = Session()
Now the file GenerateTeam.py:
from ormdb import session, SourceDatabase, Person
class GenerateTeam:
def __init__ (self):
return
def spread_johns(self):
found_db =
session.query(SourceDatabase).filter_by(name='elastic').one()
for i in range(1, 10):
p = Person()
p.name = 'john'
p.source_database = found_db
session.commit()
And finaly the file client.py:
from GenerateTeam import *
g = GenerateTeam()
g.spread_johns()
So, the GenerateTeam doesn't have any add() method... only a commit.
And executing the code above the database is filled with 9 'johns'.
[]s
Gil
Em quarta-feira, 10 de junho de 2015 16:06:29 UTC-3, Gilcan Machado
escreveu:
>
> I'll try to isolate the code and put here.
>
> Em quarta-feira, 10 de junho de 2015 16:02:45 UTC-3, Gilcan Machado
> escreveu:
>>
>> Is worse than that.
>>
>> I simply don't use the add() method in any line.
>>
>> There's no add() method being executed.
>>
>> But a commit() saves all the objects in the database.
>>
>> Seems that sqlalchemy is executing add() method in background...
>>
>> []s
>> Gil
>>
>> Em quarta-feira, 10 de junho de 2015 15:44:06 UTC-3, Michael Bayer
>> escreveu:
>>>
>>>
>>>
>>> On 6/10/15 2:22 PM, Gilcan Machado wrote:
>>>
>>> Hi.
>>>
>>> I'm dealing with a weid situation:
>>>
>>> My 'session' is loaded with objects, and when I commit all the objects
>>> are saved in the database, but without any execution of add() method.
>>>
>>> How is this possible.
>>>
>>> It's a problem to me because I'm creating a lot of objects and return it
>>> as a list to another method. The method filters the list and add() to the
>>> session only what is important.
>>>
>>> But when I execute commit() all the objects are inserted.
>>>
>>> What I'm doing wrong?
>>>
>>> What should I read to understand better the situation.
>>>
>>>
>>> hard to say without specifics, but if you are adding some things and not
>>> others, probably cascade is taking place along relationships.
>>>
>>>
>>> http://docs.sqlalchemy.org/en/rel_1_0/orm/cascades.html
>>>
>>>
>>>
>>> []s
>>> Gil
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "sqlalchemy" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/sqlalchemy.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>>
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.