text: from sqlalchemy_1_3 import ForeignKey
  from sqlalchemy_1_3 import Integer
  from sqlalchemy_1_3 import String
  from sqlalchemy_1_3.orm import create_session
  from sqlalchemy_1_3.orm import mapper
  from sqlalchemy_1_3.orm import relationship
  from sqlalchemy_1_3.testing import fixtures
  from sqlalchemy_1_3.testing.schema import Column
  from sqlalchemy_1_3.testing.schema import Table
  
  
  class O2OTest(fixtures.MappedTest):
      @classmethod
      def define_tables(cls, metadata):
          Table(
              "jack",
              metadata,
              Column(
                  "id", Integer, primary_key=True, test_needs_autoincrement=True
              ),
              Column("number", String(50)),
              Column("status", String(20)),
              Column("subroom", String(5)),
          )
  
          Table(
              "port",
              metadata,
              Column(
                  "id", Integer, primary_key=True, test_needs_autoincrement=True
              ),
              Column("name", String(30)),
              Column("description", String(100)),
              Column("jack_id", Integer, ForeignKey("jack.id")),
          )
  
      @classmethod
      def setup_mappers(cls):
          class Jack(cls.Basic):
              pass
  
          class Port(cls.Basic):
              pass
  
      def test_basic(self):
          Port, port, jack, Jack = (
              self.classes.Port,
              self.tables.port,
              self.tables.jack,
              self.classes.Jack,
          )
  
          mapper(Port, port)
          mapper(
              Jack,
              jack,
              properties=dict(
                  port=relationship(Port, backref="jack", uselist=False)
              ),
          )
  
          session = create_session()
  
          j = Jack(number="101")
          session.add(j)
          p = Port(name="fa0/1")
          session.add(p)
  
          j.port = p
          session.flush()
          jid = j.id
          pid = p.id
  
          j = session.query(Jack).get(jid)
          p = session.query(Port).get(pid)
          assert p.jack is not None
          assert p.jack is j
          assert j.port is not None
          p.jack = None
          assert j.port is None
  
          session.expunge_all()
  
          j = session.query(Jack).get(jid)
          p = session.query(Port).get(pid)
  
          j.port = None
          self.assert_(p.jack is None)
          session.flush()
  
          session.delete(j)
          session.flush()
  