Note that there are some explanatory texts on larger screens.

plurals
  1. POadd an object in sqlalchemy with relationship
    primarykey
    data
    text
    <p>I want to add a object into database using relationship, the code is blow:</p> <p>the code run in eclipse, database is postgresql</p> <pre><code>from sqlalchemy import Table, MetaData, Column, ForeignKey, Integer, String, Sequence from sqlalchemy.orm import mapper, relationship, backref from sqlalchemy.engine import create_engine from sqlalchemy.orm.session import sessionmaker </code></pre> <p>create engine and session</p> <pre><code>engine = create_engine("postgresql+psycopg2://openpg:openpgpwd@localhost:5432/testdb", echo=True) Session = sessionmaker(bind = engine) session = Session() metadata = MetaData() </code></pre> <p>create User and Address class </p> <pre><code>user = Table('user', metadata, Column('id',Integer,Sequence('user_id_seq'),primary_key=True), Column('name',String(50)), Column('fullname',String(50)), Column('password',String(12))) class User(object): def __init__(self, name, fullname, password): self.name = name self.fullname = fullname self.password = password address = Table('address', metadata, Column('id', Integer,Sequence('address_id_seq'),primary_key=True), Column('user_id',Integer,ForeignKey('user.id')), Column('email_address',String(50))) class Address(object): def __init__(self, user_id, email_address): self.user_id = user_id self.email_address = email_address mapper(User,user,properties = {'addresses': relationship(Address, backref=backref('user',order_by=address.c.id))}) mapper(Address, address) if __name__ == '__main__': jack = User('jack', 'Jack Bean', 'gjffdd') jack.addresses = [Address(email_address='jack@google.com'),Address (email_address='jack@yahoo.com')] session.add(jack) session.commit() </code></pre> <p>run in eclipse, the result is:</p> <pre><code> Traceback (most recent call last): File "D:\workspace\test1\dbtest\testrelationship.py", line 68, in &lt;module&gt; jack.addresses = [Address(email_address='jack@google.com'),Address (email_address='jack@yahoo.com')] TypeError: __init__() takes exactly 3 arguments (2 given) </code></pre> <p>I don't know how to resolve the problem, thank you!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload