-#!/usr/bin/python2.6
+#!/usr/bin/python2.7
# -*- coding: iso-8859-15 -*-
# $Id$
# $HeadURL$
-"""This module contains code to make tha access of MediaWiki tables
+"""This module contains code to make the access of MediaWiki tables
easy. The module uses sqlalchemy to access the database.
"""
from sqlalchemy import Table, Column, types
return Table("page", metadata,
Column("page_id", types.Integer, primary_key=True),
Column("page_namespace", types.Integer, nullable=False),
- Column("page_title", types.Unicode(255), nullable=False),
- Column("page_restrictions", types.Unicode, nullable=False),
+ Column("page_title", types.Unicode(255), nullable=False), # varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
+ Column("page_restrictions", types.String, nullable=False), # tinyblob NOT NULL
Column("page_counter", types.Integer, nullable=False),
Column("page_is_redirect", types.Integer, nullable=False),
Column("page_is_new", types.Integer, nullable=False),
Column("page_random", types.Float, nullable=False),
- Column("page_touched", types.Unicode(14), nullable=False),
+ Column("page_touched", types.String(14, convert_unicode='force'), nullable=False), # binary(14) NOT NULL
Column("page_latest", types.Integer, nullable=False),
Column("page_len", types.Integer, nullable=False),
)
Column("rev_id", types.Integer, nullable=False, primary_key=True),
Column("rev_page", types.Integer, nullable=False, primary_key=True),
Column("rev_text_id", types.Integer, nullable=False),
- Column("rev_comment", types.Unicode),
+ Column("rev_comment", types.String(convert_unicode='force'), nullable=False), # tinyblob NOT NULL
Column("rev_user", types.Integer, nullable=False),
- Column("rev_user_text", types.Unicode(255), nullable=False),
- Column("rev_timestamp", types.Unicode(14), nullable=False),
+ Column("rev_user_text", types.Unicode(255), nullable=False), # varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
+ Column("rev_timestamp", types.String(14, convert_unicode='force'), nullable=False), # binary(14) NOT NULL
Column("rev_minor_edit", types.Integer, nullable=False),
Column("rev_deleted", types.Integer, nullable=False),
Column("rev_len", types.Integer, nullable=False),
"""
return Table("text", metadata,
Column("old_id", types.Integer, primary_key=True),
- Column("old_text", types.Unicode),
- Column("old_flags", types.Unicode),
+ Column("old_text", types.String(convert_unicode='force')), # mediumblob NOT NULL
+ Column("old_flags", types.String(convert_unicode='force')), # tinyblob NOT NULL
+ )
+
+
+def user_table(metadata):
+ """Returns the sqlalchemy Table representing the "user" table in MediaWiki.
+ :param metadata: metadata = sqlalchemy.MetaData()
+ """
+ return Table('user', metadata,
+ Column("user_id", types.Integer, primary_key=True),
+ Column("user_name", types.Unicode(255), nullable=False), # varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
+ Column("user_real_name", types.Unicode(255), nullable=False), # varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
+ # "user_password"
+ # "user_newpassword"
+ # "user_newpass_time"
+ Column("user_email", types.Unicode, nullable=False), # tinytext NOT NULL
+ # "user_touched"
+ # "user_token"
+ # "user_email_authenticated"
+ # "user_email_token"
+ # "user_email_token_expires"
+ # "user_registration"
+ # "user_editcount"
)
"""
return Table("categorylinks", metadata,
Column("cl_from", types.Integer, nullable=False, primary_key=True),
- Column("cl_to", types.Unicode(255), nullable=False, primary_key=True),
- Column("cl_sortkey", types.Unicode, nullable=False),
+ Column("cl_to", types.Unicode(255), nullable=False, primary_key=True), # varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
+ Column("cl_sortkey", types.String(convert_unicode='force'), nullable=False), # varbinary(230) NOT NULL
Column("cl_timestamp", types.DateTime, nullable=False),
)