from sqlalchemy import create_engine
from sqlalchemy import ForeignKey
from sqlalchemy import Integer
-from sqlalchemy import MetaData
from sqlalchemy import String
from sqlalchemy import Table
from sqlalchemy import Unicode
from sqlalchemy.orm import aliased
from sqlalchemy.orm import lazyload
from sqlalchemy.orm import mapper
+from sqlalchemy.orm import registry
from sqlalchemy.orm import relationship
from sqlalchemy.orm import Session
e = create_engine("sqlite://")
-meta = MetaData()
+mapper_registry = registry()
# PART II - Table Metadata
# stores a top level record of an XML document.
documents = Table(
"documents",
- meta,
+ mapper_registry.metadata,
Column("document_id", Integer, primary_key=True),
Column("filename", String(30), unique=True),
Column("element_id", Integer, ForeignKey("elements.element_id")),
# Element and SubElement objects.
elements = Table(
"elements",
- meta,
+ mapper_registry.metadata,
Column("element_id", Integer, primary_key=True),
Column("parent_id", Integer, ForeignKey("elements.element_id")),
Column("tag", Unicode(30), nullable=False),
# stored by an Element or SubElement.
attributes = Table(
"attributes",
- meta,
+ mapper_registry.metadata,
Column(
"element_id",
Integer,
Column("value", Unicode(255)),
)
-meta.create_all(e)
+mapper_registry.metadata.create_all(e)
# PART III - Model
from sqlalchemy import create_engine
from sqlalchemy import ForeignKey
from sqlalchemy import Integer
-from sqlalchemy import MetaData
from sqlalchemy import String
from sqlalchemy import Table
from sqlalchemy import Unicode
from sqlalchemy.orm import aliased
from sqlalchemy.orm import lazyload
from sqlalchemy.orm import mapper
+from sqlalchemy.orm import registry
from sqlalchemy.orm import relationship
from sqlalchemy.orm import Session
e = create_engine("sqlite://")
-meta = MetaData()
+mapper_registry = registry()
# PART II - Table Metadata
# stores a top level record of an XML document.
documents = Table(
"documents",
- meta,
+ mapper_registry.metadata,
Column("document_id", Integer, primary_key=True),
Column("filename", String(30), unique=True),
)
# Element and SubElement objects.
elements = Table(
"elements",
- meta,
+ mapper_registry.metadata,
Column("element_id", Integer, primary_key=True),
Column("parent_id", Integer, ForeignKey("elements.element_id")),
Column("document_id", Integer, ForeignKey("documents.document_id")),
# stored by an Element or SubElement.
attributes = Table(
"attributes",
- meta,
+ mapper_registry.metadata,
Column(
"element_id",
Integer,
Column("value", Unicode(255)),
)
-meta.create_all(e)
+mapper_registry.metadata.create_all(e)
# PART III - Model
from sqlalchemy import Column
from sqlalchemy import create_engine
from sqlalchemy import Integer
-from sqlalchemy import MetaData
from sqlalchemy import PickleType
from sqlalchemy import String
from sqlalchemy import Table
-from sqlalchemy.orm import mapper
+from sqlalchemy.orm import registry
from sqlalchemy.orm import Session
e = create_engine("sqlite://")
-meta = MetaData()
+mapper_registry = registry()
+
# setup a comparator for the PickleType since it's a mutable
# element.
# the "element" column will store the ElementTree document as a BLOB.
documents = Table(
"documents",
- meta,
+ mapper_registry.metadata,
Column("document_id", Integer, primary_key=True),
Column("filename", String(30), unique=True),
Column("element", PickleType(comparator=are_elements_equal)),
)
-meta.create_all(e)
+mapper_registry.metadata.create_all(e)
# our document class. contains a string name,
# and the ElementTree root element.
# setup mapper.
-mapper(Document, documents)
+mapper_registry.map_imperatively(Document, documents)
# time to test !