I am trying to retrofit an existing application to use SQLalchemy; it uses its own database which is painfully slow.

I am presently trying to get lists working correctly; objects have lists of strings/other objects, and so I am trying to make a separate table for each list item, so that a row in the secondary table which has the foreign primary key of the object that has the list item, and the string/primary key of what it is that is listed.

Question: once I have done that, how do I set up a function to translate from the existing object to the table row? Or perhaps a better question to ask is, should I be trying to create a micromanaging function that will step by step convert my object to a number of database tables, or am I missing a way that the Mapper should be able to handle that?

My (pseudo)-code for now is (corrections welcome):

        document_table = sqlalchemy.Table("document", \
          sqlalchemy.Column("file_contents", sqlalchemy.String), \
          sqlalchemy.Column("filename", sqlalchemy.String), \
          sqlalchemy.Column("html_name", sqlalchemy.String, \
            primary_key = True), \
          sqlalchemy.Column("last_modified", sqlalchemy.Datetime), \
          sqlalchemy.Column("last_viewed", sqlalchemy.Datetime), \
          sqlalchemy.Column("permanent_ID", sqlalchemy.String), \
          sqlalchemy.Column("relative_filename", sqlalchemy.String), \
          sqlalchemy.Column("root", sqlalchemy.String), \
          sqlalchemy.Column("section", sqlalchemy.String), \
          sqlalchemy.Column("text", sqlalchemy.String), \
          sqlalchemy.Column("title", sqlalchemy.String), \
          sqlalchemy.Column("tokens", sqlalchemy.String), \
          sqlalchemy.Column("version", sqlalchemy.Integer), \
          )
        histogram_table = sqlalchemy.Table("histogram", \
          sqlalchemy.Column("html_name", sqlalchemy.String, \
            foreignkey("document.html_name")), \
          sqlalchemy.Column("word", sqlalchemy.String), \
          sqlalchemy.Column("count", sqlalchemy.Integer),
          )
        histogram_total_table = sqlalchemy.Table("histogram_total", \
          sqlalchemy.Column("html_name", sqlalchemy.String, \
            foreignkey("document.html_name")), \
          sqlalchemy.Column("count", sqlalchemy.Integer),
          )
        aliases_table = sqlalchemy.Table("aliases", \
          sqlalchemy.Column("old", sqlalchemy.String), \
          sqlalchemy.Column("new", sqlalchemy.String) \
          )
        # identifier is primary key
        section_table = sqlalchemy.Table("section", \
          #sqlalchemy.Column("documents", sqlalchemy.String), \
          sqlalchemy.Column("html_name", sqlalchemy.String, \
            primary_key = True), \
          sqlalchemy.Column("parent", sqlalchemy.String), \
          sqlalchemy.Column("root", sqlalchemy.String),
          #sqlalchemy.Column("subsections", LIST_OF_IDENTIFIER_PRIMARY_KEYS), \
          #sqlalchemy.Column("text_patterns_to_accept", LIST_OF_STRINGS), \
          #sqlalchemy.Column("text_patterns_to_deny", LIST_OF_STRINGS), \
          sqlalchemy.Column("url_prefix", sqlalchemy.String), \
          sqlalchemy.Column("url_root", sqlalchemy.String) \
          )
        section_table_documents("section_table_documents", \
          sqlalchemy.Column("section_html_name", sqlalchemy.String), \
          sqlalchemy.Column("document_html_name", sqlalchemy.String) \
          )
        section_table_subsections("section_table_subsections", \
          sqlalchemy.Column("section_html_name", sqlalchemy.String), \
          sqlalchemy.Column("subsection_html_name", sqlalchemy.String) \
          )
        section_table_text_patterns_to_accept( \
          "section_table_text_patterns_to_accept", \
          sqlalchemy.Column("section_html_name", sqlalchemy.String), \
          sqlalchemy.Column("text_pattern_to_accept", sqlalchemy.String) \
          )
        section_table_text_patterns_to_deny( \
          "section_table_text_patterns_to_deny", \
          sqlalchemy.Column("section_html_name", sqlalchemy.String), \
          sqlalchemy.Column("text_pattern_to_deny", sqlalchemy.String) \
          )


--
++ Jonathan Hayward, [EMAIL PROTECTED]
** To see an award-winning website with stories, essays, artwork,
** games, and a four-dimensional maze, why not visit my home page?
** All of this is waiting for you at http://JonathansCorner.com

** If you'd like a Google Mail (gmail.com) account, please tell me!

Reply via email to