The pokedex.db.tables module defines all of the tables in the Pokédex. They are all defined with SQLAlchemy’s declarative extension.
To introspect the tables programmatically, you can use the following:
A list of all the classes you see below.
The SQLAlchemy MetaData containing all the tables.
Each of the classes has a translation_classes attribute: a potentially empty list of translation classes. See pokedex.db.multilang for how these work.
Many tables have these columns:
A Pokémon species: the standard 1–151. Or 649. Whatever.
Table name: pokemon_species (single: pokemon_species)
Has id, identifier, and name via pokemon_species_names.
Columns:
PokemonSpecies.generation (generation_id → Generation.id)
ID of the generation this species first appeared in
PokemonSpecies.evolves_from_species_id (→ PokemonSpecies.id):
The species from which this one evolves
PokemonSpecies.evolution_chain (evolution_chain_id → EvolutionChain.id)
ID of the species’ evolution chain (a.k.a. family)
PokemonSpecies.color (color_id → PokemonColor.id)
ID of this Pokémon’s Pokédex color, as used for a gimmick search function in the games.
PokemonSpecies.shape (shape_id → PokemonShape.id)
ID of this Pokémon’s body shape, as used for a gimmick search function in the games.
PokemonSpecies.habitat (habitat_id → PokemonHabitat.id)
ID of this Pokémon’s habitat, as used for a gimmick search function in the games.
PokemonSpecies.gender_rate (int):
The chance of this Pokémon being female, in eighths; or -1 for genderless
PokemonSpecies.capture_rate (int):
The base capture rate; up to 255
PokemonSpecies.base_happiness (int):
The tameness when caught by a normal ball
PokemonSpecies.is_baby (bool):
True iff the Pokémon is a baby, i.e. a lowest-stage Pokémon that cannot breed but whose evolved form can.
PokemonSpecies.hatch_counter (int):
Initial hatch counter: one must walk 255 × (hatch_counter + 1) steps before this Pokémon’s egg hatches, unless utilizing bonuses like Flame Body’s
PokemonSpecies.has_gender_differences (bool):
Set iff the species exhibits enough sexual dimorphism to have separate sets of sprites in Gen IV and beyond.
PokemonSpecies.growth_rate (growth_rate_id → GrowthRate.id)
ID of the growth rate for this family
PokemonSpecies.forms_switchable (bool):
True iff a particular individual of this species can switch beween its different forms.
Internationalized strings:
PokemonSpecies.genus (unicode – plaintext) via pokemon_species_names
The short flavor text, such as “Seed” or “Lizard”; usually affixed with the word “Pokémon”
PokemonSpecies.flavor_summary (unicode – plaintext) via pokemon_species_flavor_summaries
Text containing facts from all flavor texts, for languages without official game translations
PokemonSpecies.form_description (unicode – markdown) via pokemon_species_prose
Description of how the forms work
Relationships:
PokemonSpecies.parent_species (→ [PokemonSpecies])
The species from which this one evolves
PokemonSpecies.evolutions (→ [PokemonEvolution])
PokemonSpecies.flavor_text (→ [PokemonSpeciesFlavorText])
Ordered by: pokemon_species_flavor_text.version_id ASC
PokemonSpecies.egg_groups (→ [EggGroup])
Ordered by: pokemon_egg_groups.egg_group_id ASC
PokemonSpecies.forms (→ [PokemonForm])
Ordered by: pokemon_forms."order" ASC, pokemon_forms.form_identifier ASC
PokemonSpecies.default_form (→ PokemonForm)
A representative form of this species
PokemonSpecies.default_pokemon (→ Pokemon)
PokemonSpecies.dex_numbers (→ [PokemonDexNumber])
Ordered by: pokemon_dex_numbers.pokedex_id ASC
PokemonSpecies.child_species (→ [PokemonSpecies])
The species to which this one evolves
PokemonSpecies.pokemon (→ [Pokemon])
PokemonSpecies.triggered_evolutions (→ [PokemonEvolution])
A Pokémon. The core to this whole mess.
This table defines “Pokémon” the same way the games do: a form with different types, moves, or other game-changing properties counts as a different Pokémon. For example, this table contains four rows for Deoxys, but only one for Unown.
Table name: pokemon (single: pokemon)
Has id.
Columns:
Pokemon.species (species_id → PokemonSpecies.id)
ID of the species this Pokémon belongs to
Pokemon.height (int):
The height of the Pokémon, in decimeters (tenths of a meter)
Pokemon.weight (int):
The weight of the Pokémon, in tenths of a kilogram (decigrams)
Pokemon.base_experience (int):
The base EXP gained when defeating this Pokémon
Pokemon.order (int):
Order for sorting. Almost national order, except families are grouped together.
Pokemon.is_default (bool):
Set for exactly one pokemon used as the default for each species.
Relationships:
Pokemon.all_abilities (→ [Ability])
All abilities the Pokémon can have, including the Hidden Ability
Ordered by: pokemon_abilities.slot ASC
Pokemon.abilities (→ [Ability])
Abilities the Pokémon can have in the wild
Ordered by: pokemon_abilities.slot ASC
Pokemon.dream_ability (→ Ability)
The Pokémon’s Hidden Ability
Pokemon.forms (→ [PokemonForm])
Ordered by: pokemon_forms."order" ASC, pokemon_forms.form_identifier ASC
Pokemon.default_form (→ PokemonForm)
A representative form of this pokémon
Pokemon.items (→ [PokemonItem])
Info about items this pokémon holds in the wild
Pokemon.stats (→ [PokemonStat])
Ordered by: pokemon_stats.stat_id ASC
Pokemon.types (→ [Type])
Ordered by: pokemon_types.slot ASC
Pokemon.encounters (→ [Encounter])
Pokemon.pokemon_moves (→ [PokemonMove])
Returns the MoveDamageClass that this Pokémon is best suited for, based on its attack stats.
If the attack stats are about equal (within 5), returns None. The value None, not the damage class called ‘None’.
Returns a name for this Pokémon, specifiying the form iff it represents a specific PokemonForm.
Returns a PokemonStat record for the given stat name (or Stat row object). Uses the normal has-many machinery, so all the stats are effectively cached.
An individual form of a Pokémon. This includes every variant (except color differences) of every Pokémon, regardless of how the games treat them. Even Pokémon with no alternate forms have one row in this table, to represent their lone “normal” form.
Table name: pokemon_forms (single: pokemon_form)
Has id.
Columns:
PokemonForm.form_identifier (unicode – identifier):
An identifier of the form, uniue among a species. May be None for the default form of the species.
PokemonForm.pokemon (pokemon_id → Pokemon.id)
The ID of the base Pokémon for this form.
PokemonForm.introduced_in_version_group_id (→ VersionGroup.id):
The ID of the version group in which this form first appeared.
PokemonForm.is_default (bool):
Set for exactly one form used as the default for each pokemon (not necessarily species).
PokemonForm.is_battle_only (bool):
Set iff the form can only appear in battle.
PokemonForm.order (int):
The order in which forms should be sorted. Multiple forms may have equal order, in which case they should fall back on sorting by name.
Internationalized strings:
PokemonForm.form_name (unicode – plaintext) via pokemon_form_names
The full form name, e.g. ‘Sky Forme’, for pokémon with different forms
PokemonForm.pokemon_name (unicode – plaintext) via pokemon_form_names
The full pokémon name, e.g. ‘Sky Shaymin’, for pokémon with different forms
Relationships:
PokemonForm.species: species of self.pokemon
PokemonForm.version_group (→ [VersionGroup])
PokemonForm.pokeathlon_stats (→ [PokemonFormPokeathlonStat])
Ordered by: PokemonFormPokeathlonStat.pokeathlon_stat_id
Name of this form: the form_name, if set; otherwise the species name
A family of Pokémon that are linked by evolution
Table name: evolution_chains
Has id.
Columns:
EvolutionChain.baby_trigger_item (baby_trigger_item_id → Item.id)
Item that a parent must hold while breeding to produce a baby
Relationships:
EvolutionChain.species (→ [PokemonSpecies])
A required action (“trigger”) and the conditions under which the trigger must occur to cause a Pokémon to evolve.
Any condition may be null if it does not apply for a particular Pokémon.
Table name: pokemon_evolution
Has id.
Columns:
PokemonEvolution.evolved_species (evolved_species_id → PokemonSpecies.id)
The ID of the post-evolution species.
PokemonEvolution.evolution_trigger_id (→ EvolutionTrigger.id):
The ID of the evolution trigger.
PokemonEvolution.trigger_item (trigger_item_id → Item.id)
The ID of the item that must be used on the Pokémon.
PokemonEvolution.minimum_level (int):
The minimum level for the Pokémon.
PokemonEvolution.gender (enum: [male, female]):
The Pokémon’s required gender, or None if gender doesn’t matter
PokemonEvolution.location (location_id → Location.id)
The ID of the location the evolution must be triggered at.
PokemonEvolution.held_item (held_item_id → Item.id)
The ID of the item the Pokémon must hold.
PokemonEvolution.time_of_day (enum: [day, night]):
The required time of day.
PokemonEvolution.known_move (known_move_id → Move.id)
The ID of the move the Pokémon must know.
PokemonEvolution.minimum_happiness (int):
The minimum happiness value the Pokémon must have.
PokemonEvolution.minimum_beauty (int):
The minimum Beauty value the Pokémon must have.
PokemonEvolution.relative_physical_stats (int):
The required relation between the Pokémon’s Attack and Defense stats, as sgn(atk-def).
PokemonEvolution.party_species (party_species_id → PokemonSpecies.id)
The ID of the species that must be present in the party.
PokemonEvolution.trade_species (trade_species_id → PokemonSpecies.id)
The ID of the species for which this one must be traded.
Relationships:
PokemonEvolution.trigger (→ [EvolutionTrigger])
A Move: technique or attack a Pokémon can learn to use
Table name: moves (single: move)
Has id, identifier, and name via move_names.
Columns:
Move.generation (generation_id → Generation.id)
ID of the generation this move first appeared in
Move.type (type_id → Type.id)
ID of the move’s elemental type
Move.power (int):
Base power of the move
Move.pp (int):
Base PP (Power Points) of the move, nullable if not applicable (e.g. Struggle and Shadow moves).
Move.accuracy (int):
Accuracy of the move; NULL means it never misses
Move.priority (int):
The move’s priority bracket
Move.target (target_id → MoveTarget.id)
ID of the target (range) of the move
Move.damage_class (damage_class_id → MoveDamageClass.id)
ID of the damage class (physical/special) of the move
Move.effect (effect_id → MoveEffect.id)
ID of the move’s effect
Move.effect_chance (int):
The chance for a secondary effect. What this is a chance of is specified by the move’s effect.
Move.contest_type (contest_type_id → ContestType.id)
ID of the move’s Contest type (e.g. cool or smart)
Move.contest_effect (contest_effect_id → ContestEffect.id)
ID of the move’s Contest effect
Move.super_contest_effect (super_contest_effect_id → SuperContestEffect.id)
ID of the move’s Super Contest effect
Internationalized strings:
Move.flavor_summary (unicode – plaintext) via move_flavor_summaries
Text containing facts from all flavor texts, for languages without official game translations
Relationships:
Move.pokemon_moves (→ [PokemonMove])
Move.triggered_evolutions (→ [PokemonEvolution])
Undocumented:
Move.changelog
Move.contest_combo_first
Move.contest_combo_next
Move.contest_combo_prev
Move.contest_combo_second
Move.effect_map
Move.flags
Move.flavor_text
Move.machines
Move.meta
Move.meta_stat_changes
Move.move_effect
Move.move_flags
Move.short_effect
Move.short_effect_map
Move.super_contest_combo_first
Move.super_contest_combo_next
Move.super_contest_combo_prev
Move.super_contest_combo_second
An effect of a move
Table name: move_effects (single: move_effect)
Has id.
Internationalized strings:
MoveEffect.short_effect (unicode – markdown) via move_effect_prose
A short summary of the effect
MoveEffect.effect (unicode – markdown) via move_effect_prose
A detailed description of the effect
Undocumented:
MoveEffect.changelog
MoveEffect.move_changelog
MoveEffect.moves
Metadata for move effects, sorta-kinda ripped straight from the game
Table name: move_meta
Columns:
MoveMeta.move (move_id → Move.id)
A numeric ID
MoveMeta.meta_category_id (→ MoveMetaCategory.id):
ID of the move category
MoveMeta.meta_ailment_id (→ MoveMetaAilment.id):
ID of the caused ailment
MoveMeta.min_hits (int):
Minimum number of hits per use
MoveMeta.max_hits (int):
Maximum number of hits per use
MoveMeta.min_turns (int):
Minimum number of turns the user is forced to use the move
MoveMeta.max_turns (int):
Maximum number of turns the user is forced to use the move
MoveMeta.recoil (int):
Recoil damage, in percent of damage done
MoveMeta.healing (int):
Healing, in percent of user’s max HP
MoveMeta.crit_rate (int):
Critical hit rate bonus
MoveMeta.ailment_chance (int):
Chance to cause an ailment, in percent
MoveMeta.flinch_chance (int):
Chance to cause flinching, in percent
MoveMeta.stat_chance (int):
Chance to cause a stat change, in percent
Undocumented:
MoveMeta.ailment
MoveMeta.category
An Item from the games, like “Poké Ball” or “Bicycle”.
Table name: items (single: item)
Has id, identifier, and name via item_names.
Columns:
Item.category (category_id → ItemCategory.id)
ID of a category this item belongs to
Item.cost (int):
Cost of the item when bought. Items sell for half this price.
Item.fling_power (int):
Power of the move Fling when used with this item.
Item.fling_effect (fling_effect_id → ItemFlingEffect.id)
ID of the fling-effect of the move Fling when used with this item. Note that these are different from move effects.
Internationalized strings:
Item.short_effect (unicode – markdown) via item_prose
A short summary of the effect
Item.effect (unicode – markdown) via item_prose
Detailed description of the item’s effect.
Item.flavor_summary (unicode – plaintext) via item_flavor_summaries
Text containing facts from all flavor texts, for languages without official game translations
Relationships:
Item.required_for_evolutions (→ [PokemonEvolution])
Item.triggered_evolutions (→ [PokemonEvolution])
Undocumented:
Item.berry
Item.evolution_chains
Item.flags
Item.flavor_text
Item.game_indices
Item.machines
Item.pocket
Item.pokemon
True if the item appears underground, as specified by the appropriate flag
A Berry, consumable item that grows on trees
For data common to all items, such as the name, see the corresponding item entry.
Table name: berries
Has id.
Columns:
Berry.item (item_id → Item.id)
The ID of the item that represents this Berry
Berry.firmness (firmness_id → BerryFirmness.id)
The ID of this Berry’s firmness category
Berry.natural_gift_power (int):
Natural Gift’s power when used with this Berry
Berry.natural_gift_type (natural_gift_type_id → Type.id)
The ID of the Type that Natural Gift has when used with this Berry
Berry.size (int):
The size of this Berry, in millimeters
Berry.max_harvest (int):
The maximum number of these berries that can grow on one tree in Generation IV
Berry.growth_time (int):
Time it takes the tree to grow one stage, in hours. Berry trees go through four of these growth stages before they can be picked.
Berry.soil_dryness (int):
The speed at which this Berry dries out the soil as it grows. A higher rate means the soil dries more quickly.
Berry.smoothness (int):
The smoothness of this Berry, used in making Pokéblocks or Poffins
Undocumented:
Berry.berry_firmness
Berry.flavors
Any of the elemental types Pokémon and moves can have.
Table name: types (single: type)
Has id, identifier, and name via type_names.
Columns:
Type.generation (generation_id → Generation.id)
The ID of the generation this type first appeared in.
Type.damage_class (damage_class_id → MoveDamageClass.id)
The ID of the damage class this type’s moves had before Generation IV, null if not applicable (e.g. ???).
Relationships:
Type.pokemon (→ [Pokemon])
Undocumented:
Type.damage_efficacies
Type.move_changelog
Type.moves
Type.target_efficacies
An ability a Pokémon can have, such as Static or Pressure.
Table name: abilities (single: ability)
Has id, identifier, and name via ability_names.
Columns:
Ability.generation (generation_id → Generation.id)
The ID of the generation this ability was introduced in
Internationalized strings:
Ability.effect (unicode – markdown) via ability_prose
A detailed description of this ability’s effect
Ability.short_effect (unicode – markdown) via ability_prose
A short summary of this ability’s effect
Relationships:
Ability.all_pokemon (→ [Pokemon])
Ability.dream_pokemon (→ [Pokemon])
Ability.pokemon (→ [Pokemon])
Undocumented:
Ability.changelog
Ability.flavor_text
A language the Pokémon games have been translated into
Table name: languages (single: language)
Has id, identifier, and name via language_names.
Columns:
Language.iso639 (unicode – identifier):
The two-letter code of the country where this language is spoken. Note that it is not unique.
Language.iso3166 (unicode – identifier):
The two-letter code of the language. Note that it is not unique.
Language.official (bool):
True iff games are produced in the language.
Language.order (int):
Order for sorting in foreign name lists.
A Generation of the Pokémon franchise
Table name: generations (single: generation)
Has id, identifier, and name via generation_names.
Columns:
Generation.main_region (main_region_id → Region.id)
ID of the region this generation’s main games take place in
Generation.canonical_pokedex (canonical_pokedex_id → Pokedex.id)
ID of the Pokédex this generation’s main games use by default
Relationships:
Generation.species (→ [PokemonSpecies])
Undocumented:
Generation.abilities
Generation.moves
Generation.types
Generation.version_groups
Generation.versions
A group of versions, containing either two paired versions (such as Red and Blue) or a single game (such as Yellow.)
Table name: version_groups
Has id.
Columns:
VersionGroup.generation (generation_id → Generation.id)
The ID of the generation the games in this group belong to.
VersionGroup.pokedex (pokedex_id → Pokedex.id)
The ID of the regional Pokédex used in this version group.
VersionGroup.order (int):
Order for sorting. Almost by date of release, except similar versions are grouped together.
Undocumented:
VersionGroup.ability_changelog
VersionGroup.move_changelog
VersionGroup.move_effect_changelog
VersionGroup.regions
VersionGroup.version_group_regions
VersionGroup.versions
An individual main-series Pokémon game.
Table name: versions (single: version)
Has id, identifier, and name via version_names.
Columns:
Version.version_group (version_group_id → VersionGroup.id)
The ID of the version group this game belongs to.
Relationships:
Version.encounters (→ [Encounter])
Undocumented:
Version.generation
A collection of Pokémon species ordered in a particular way
Table name: pokedexes (single: pokedex)
Has id, identifier, and name via pokedex_prose.
Columns:
Pokedex.region (region_id → Region.id)
ID of the region this Pokédex is used in, or None if it’s global
Internationalized strings:
Pokedex.description (unicode – plaintext) via pokedex_prose
A longer description of the Pokédex
Undocumented:
Pokedex.canonical_for_generation
Pokedex.version_groups
A place in the Pokémon world
Table name: locations (single: location)
Has id, identifier, and name via location_names.
Columns:
Location.region (region_id → Region.id)
ID of the region this location is in
Relationships:
Location.triggered_evolutions (→ [PokemonEvolution])
Undocumented:
Location.areas
Location.game_indices
A sub-area of a location
Table name: location_areas (single: location_area)
Has id, identifier, and name via location_area_prose.
Columns:
LocationArea.location (location_id → Location.id)
ID of the location this area is part of
LocationArea.game_index (int):
ID the games ude for this area
Relationships:
LocationArea.encounters (→ [Encounter])
Undocumented:
LocationArea.encounter_rates
None
Table name: location_area_encounter_rates
Columns:
LocationAreaEncounterRate.location_area (location_area_id → LocationArea.id)
ID of the area
LocationAreaEncounterRate.encounter_method_id (→ EncounterMethod.id):
ID of the method
LocationAreaEncounterRate.version_id (→ Version.id):
ID of the version
LocationAreaEncounterRate.rate (int):
The encounter rate
Undocumented:
LocationAreaEncounterRate.method
Encounters with wild Pokémon.
Bear with me, here.
Within a given area in a given game, encounters are differentiated by the “slot” they are in and the state of the game world.
What the player is doing to get an encounter, such as surfing or walking through tall grass, is called a method. Each method has its own set of encounter slots.
Within a method, slots are defined primarily by rarity. Each slot can also be affected by world conditions; for example, the 20% slot for walking in tall grass is affected by whether a swarm is in effect in that area. “Is there a swarm?” is a condition; “there is a swarm” and “there is not a swarm” are the possible values of this condition.
A slot (20% walking in grass) and any appropriate world conditions (no swarm) are thus enough to define a specific encounter.
Well, okay, almost: each slot actually appears twice.
Table name: encounters
Has id.
Columns:
Encounter.version (version_id → Version.id)
The ID of the version this applies to
Encounter.location_area (location_area_id → LocationArea.id)
The ID of the location of this encounter
Encounter.encounter_slot_id (→ EncounterSlot.id):
The ID of the encounter slot, which determines method and rarity
Encounter.pokemon (pokemon_id → Pokemon.id)
The ID of the encountered Pokémon
Encounter.min_level (int):
The minimum level of the encountered Pokémon
Encounter.max_level (int):
The maxmum level of the encountered Pokémon
Relationships:
Encounter.condition_value_map (→ [EncounterConditionValueMap])
Encounter.condition_values: condition_value of self.condition_value_map
Encounter.slot (→ [EncounterSlot])
A conditions in the game world that affects Pokémon encounters, such as time of day.
Table name: encounter_conditions (single: encounter_condition)
Has id, identifier, and name via encounter_condition_prose.
Undocumented:
EncounterCondition.values
A possible state for a condition; for example, the state of ‘swarm’ could be ‘swarm’ or ‘no swarm’.
Table name: encounter_condition_values (single: encounter_condition_value)
Has id, identifier, and name via encounter_condition_value_prose.
Columns:
EncounterConditionValue.encounter_condition_id (→ EncounterCondition.id):
The ID of the encounter condition this is a value of
EncounterConditionValue.is_default (bool):
Set if this value is the default state for the condition
Undocumented:
EncounterConditionValue.condition
EncounterConditionValue.encounter_map
A way the player can enter a wild encounter, e.g., surfing, fishing, or walking through tall grass.
Table name: encounter_methods (single: encounter_method)
Has id, identifier, and name via encounter_method_prose.
Undocumented:
EncounterMethod.slots
An abstract “slot” within a method, associated with both some set of conditions and a rarity.
Note that there are two encounters per slot, so the rarities will only add up to 50.
Table name: encounter_slots
Has id.
Columns:
EncounterSlot.version_group (version_group_id → VersionGroup.id)
The ID of the version group this slot is in
EncounterSlot.encounter_method_id (→ EncounterMethod.id):
The ID of the method
EncounterSlot.slot (int):
This slot’s order for the location and method
EncounterSlot.rarity (int):
The chance of the encounter as a percentage
Relationships:
EncounterSlot.encounters (→ [Encounter])
Undocumented:
EncounterSlot.method
Combo of two moves in a Contest.
Table name: contest_combos
Columns:
ContestCombo.first_move_id (→ Move.id):
The ID of the first move in the combo
ContestCombo.second_move_id (→ Move.id):
The ID of the second and final move in the combo
Undocumented:
ContestCombo.first
ContestCombo.second
Effect of a move when used in a Contest.
Table name: contest_effects (single: contest_effect)
Has id.
Columns:
ContestEffect.appeal (int):
The base number of hearts the user of this move gets
ContestEffect.jam (int):
The base number of hearts the user’s opponent loses
Internationalized strings:
ContestEffect.flavor_text (unicode – gametext) via contest_effect_prose
The in-game description of this effect
ContestEffect.effect (unicode – plaintext) via contest_effect_prose
A detailed description of the effect
Undocumented:
ContestEffect.moves
Combo of two moves in a Super Contest.
Table name: super_contest_combos
Columns:
SuperContestCombo.first_move_id (→ Move.id):
The ID of the first move in the combo.
SuperContestCombo.second_move_id (→ Move.id):
The ID of the second and last move.
Undocumented:
SuperContestCombo.first
SuperContestCombo.second
An effect a move can have when used in the Super Contest
Table name: super_contest_effects (single: super_contest_effect)
Has id.
Columns:
SuperContestEffect.appeal (int):
The number of hearts the user gains.
Internationalized strings:
SuperContestEffect.flavor_text (unicode – plaintext) via super_contest_effect_prose
A description of the effect.
Undocumented:
SuperContestEffect.moves
A Berry firmness, such as “hard” or “very soft”.
Table name: berry_firmness (single: berry_firmness)
Has id, identifier, and name via berry_firmness_names.
Undocumented:
BerryFirmness.berries
A Contest type, such as “cool” or “smart”, and their associated Berry flavors and Pokéblock colors.
Table name: contest_types (single: contest_type)
Has id, identifier, and name via contest_type_names.
Internationalized strings:
ContestType.flavor (unicode – plaintext) via contest_type_names
The name of the corresponding Berry flavor
ContestType.color (unicode – plaintext) via contest_type_names
The name of the corresponding Pokéblock color
Undocumented:
ContestType.hating_natures
ContestType.liking_natures
ContestType.moves
An Egg group. Usually, two Pokémon can breed if they share an Egg Group.
(exceptions are the Ditto and No Eggs groups)
Table name: egg_groups (single: egg_group)
Has id, identifier, and name via egg_group_prose.
Relationships:
EggGroup.species (→ [PokemonSpecies])
An evolution type, such as “level” or “trade”.
Table name: evolution_triggers (single: evolution_trigger)
Has id, identifier, and name via evolution_trigger_prose.
Relationships:
EvolutionTrigger.evolutions (→ [PokemonEvolution])
Growth rate of a Pokémon, i.e. the EXP → level function.
Table name: growth_rates (single: growth_rate)
Has id, identifier, and name via growth_rate_prose.
Columns:
GrowthRate.formula (unicode – latex):
The formula
Relationships:
GrowthRate.evolution_chains (→ [PokemonSpecies])
Undocumented:
GrowthRate.experience_table
GrowthRate.max_experience
GrowthRate.max_experience_obj
An item category
Table name: item_categories (single: item_category)
Has id, identifier, and name via item_category_prose.
Columns:
ItemCategory.pocket (pocket_id → ItemPocket.id)
ID of the pocket these items go to
Undocumented:
ItemCategory.items
An effect of the move Fling when used with a specific item
Table name: item_fling_effects (single: item_fling_effect)
Has id.
Internationalized strings:
ItemFlingEffect.effect (unicode – plaintext) via item_fling_effect_prose
Description of the effect
Undocumented:
ItemFlingEffect.items
A pocket that categorizes items
Table name: item_pockets (single: item_pocket)
Has id, identifier, and name via item_pocket_names.
Undocumented:
ItemPocket.categories
A battle style of a move
Table name: move_battle_styles (single: move_battle_style)
Has id, identifier, and name via move_battle_style_prose.
Undocumented:
MoveBattleStyle.nature_preferences
Any of the damage classes moves can have, i.e. physical, special, or non-damaging.
Table name: move_damage_classes (single: move_damage_class)
Has id, identifier, and name via move_damage_class_prose.
Internationalized strings:
MoveDamageClass.description (unicode – plaintext) via move_damage_class_prose
A description of the class
Undocumented:
MoveDamageClass.moves
MoveDamageClass.stats
MoveDamageClass.types
Common status ailments moves can inflict on a single Pokémon, including major ailments like paralysis and minor ailments like trapping.
Table name: move_meta_ailments (single: move_meta_ailment)
Has id, identifier, and name via move_meta_ailment_names.
Undocumented:
MoveMetaAilment.move_meta
Very general categories that loosely group move effects.
Table name: move_meta_categories (single: move_meta_category)
Has id and identifier.
Internationalized strings:
MoveMetaCategory.description (unicode – plaintext) via move_meta_category_prose
A description of the category
Undocumented:
MoveMetaCategory.move_meta
Targetting or “range” of a move, e.g. “Affects all opponents” or “Affects user”.
Table name: move_targets (single: move_target)
Has id, identifier, and name via move_target_prose.
Internationalized strings:
MoveTarget.description (unicode – plaintext) via move_target_prose
A description
Undocumented:
MoveTarget.moves
A nature a Pokémon can have, such as Calm or Brave
Table name: natures (single: nature)
Has id, identifier, and name via nature_names.
Columns:
Nature.decreased_stat (decreased_stat_id → Stat.id)
ID of the stat that this nature decreases by 10% (if decreased_stat_id is the same, the effects cancel out)
Nature.increased_stat (increased_stat_id → Stat.id)
ID of the stat that this nature increases by 10% (if decreased_stat_id is the same, the effects cancel out)
Nature.hates_flavor (hates_flavor_id → ContestType.id)
ID of the Berry flavor the Pokémon hates (if likes_flavor_id is the same, the effects cancel out)
Nature.likes_flavor (likes_flavor_id → ContestType.id)
ID of the Berry flavor the Pokémon likes (if hates_flavor_id is the same, the effects cancel out)
Undocumented:
Nature.battle_style_preferences
Nature.pokeathlon_effects
Returns True iff this nature doesn’t alter a Pokémon’s stats, bestow taste preferences, etc.
The “Pokédex color” of a Pokémon species. Usually based on the Pokémon’s color.
Table name: pokemon_colors (single: pokemon_color)
Has id, identifier, and name via pokemon_color_names.
Relationships:
PokemonColor.species (→ [PokemonSpecies])
A method a move can be learned by, such as “Level up” or “Tutor”.
Table name: pokemon_move_methods (single: pokemon_move_method)
Has id, identifier, and name via pokemon_move_method_prose.
Internationalized strings:
PokemonMoveMethod.description (unicode – plaintext) via pokemon_move_method_prose
A detailed description of how the method works
The shape of a Pokémon’s body. Used for flavor in generation IV and V Pokédexes.
Table name: pokemon_shapes (single: pokemon_shape)
Has id, identifier, and name via pokemon_shape_prose.
Internationalized strings:
PokemonShape.awesome_name (unicode – plaintext) via pokemon_shape_prose
A splendiferous name of the body shape
Relationships:
PokemonShape.species (→ [PokemonSpecies])
A Stat, such as Attack or Speed
Table name: stats (single: stat)
Has id, identifier, and name via stat_names.
Columns:
Stat.damage_class (damage_class_id → MoveDamageClass.id)
For offensive and defensive stats, the damage this stat relates to; otherwise None (the NULL value)
Stat.is_battle_only (bool):
Whether this stat only exists within a battle
Undocumented:
Stat.decreasing_natures
Stat.hints
Stat.increasing_natures
Stat.move_meta_stat_changes
History of changes to abilities across main game versions.
Table name: ability_changelog (single: ability_changelog)
Has id.
Columns:
AbilityChangelog.ability (ability_id → Ability.id)
The ID of the ability that changed
AbilityChangelog.changed_in_version_group_id (→ VersionGroup.id):
The ID of the version group in which the ability changed
Internationalized strings:
AbilityChangelog.effect (unicode – markdown) via ability_changelog_prose
A description of the old behavior
Undocumented:
AbilityChangelog.changed_in
History of changes to move effects across main game versions.
Table name: move_effect_changelog (single: move_effect_changelog)
Has id.
Columns:
MoveEffectChangelog.effect (effect_id → MoveEffect.id)
The ID of the effect that changed
MoveEffectChangelog.changed_in_version_group_id (→ VersionGroup.id):
The ID of the version group in which the effect changed
Internationalized strings:
MoveEffectChangelog.effect (unicode – markdown) via move_effect_changelog_prose
A description of the old behavior
Undocumented:
MoveEffectChangelog.changed_in
MoveEffectChangelog.move_effect
History of changes to moves across main game versions.
Table name: move_changelog (single: move_changelog)
Columns:
MoveChangelog.move (move_id → Move.id)
ID of the move that changed
MoveChangelog.changed_in_version_group_id (→ VersionGroup.id):
ID of the version group in which the move changed
MoveChangelog.type (type_id → Type.id)
Prior type of the move, or NULL if unchanged
MoveChangelog.power (int):
Prior base power of the move, or NULL if unchanged
MoveChangelog.pp (int):
Prior base PP of the move, or NULL if unchanged
MoveChangelog.accuracy (int):
Prior accuracy of the move, or NULL if unchanged
MoveChangelog.effect (effect_id → MoveEffect.id)
Prior ID of the effect, or NULL if unchanged
MoveChangelog.effect_chance (int):
Prior effect chance, or NULL if unchanged
Undocumented:
MoveChangelog.changed_in
MoveChangelog.effect_map
MoveChangelog.move_effect
MoveChangelog.short_effect
MoveChangelog.short_effect_map
An in-game description of an item
Table name: item_flavor_text (single: item_flavor_text)
Columns:
ItemFlavorText.item (item_id → Item.id)
The ID of the item
ItemFlavorText.version_group (version_group_id → VersionGroup.id)
ID of the version group that sports this text
ItemFlavorText.language (language_id → Language.id)
The language
ItemFlavorText.flavor_text (unicode – gametext):
The flavor text itself
In-game flavor text of an ability
Table name: ability_flavor_text
Columns:
AbilityFlavorText.ability (ability_id → Ability.id)
The ID of the ability
AbilityFlavorText.version_group (version_group_id → VersionGroup.id)
The ID of the version group this flavor text is taken from
AbilityFlavorText.language (language_id → Language.id)
The language
AbilityFlavorText.flavor_text (unicode – gametext):
The actual flavor text
In-game description of a move
Table name: move_flavor_text
Columns:
MoveFlavorText.move (move_id → Move.id)
ID of the move
MoveFlavorText.version_group (version_group_id → VersionGroup.id)
ID of the version group this text appears in
MoveFlavorText.language (language_id → Language.id)
The language
MoveFlavorText.flavor_text (unicode – gametext):
The flavor text
In-game Pokédex descrption of a Pokémon.
Table name: pokemon_species_flavor_text
Columns:
PokemonSpeciesFlavorText.species (species_id → PokemonSpecies.id)
ID of the Pokémon
PokemonSpeciesFlavorText.version (version_id → Version.id)
ID of the version that has this flavor text
PokemonSpeciesFlavorText.language (language_id → Language.id)
The language
PokemonSpeciesFlavorText.flavor_text (unicode – gametext):
The flavor text
A Berry flavor level.
Table name: berry_flavors
Columns:
BerryFlavor.berry (berry_id → Berry.id)
The ID of the berry
BerryFlavor.contest_type (contest_type_id → ContestType.id)
The ID of the flavor
BerryFlavor.flavor (int):
The level of the flavor in the berry
Maps encounters to the specific conditions under which they occur.
Table name: encounter_condition_value_map
Columns:
EncounterConditionValueMap.encounter (encounter_id → Encounter.id)
The ID of the encounter
EncounterConditionValueMap.encounter_condition_value_id (→ EncounterConditionValue.id):
The ID of the encounter condition value
Undocumented:
EncounterConditionValueMap.condition_value
An item attribute such as “consumable” or “holdable”.
Table name: item_flags (single: item_flag)
Has id, identifier, and name via item_flag_prose.
Internationalized strings:
ItemFlag.description (unicode – plaintext) via item_flag_prose
Short description of the flag
A TM or HM; numbered item that can teach a move to a Pokémon
Table name: machines
Columns:
Machine.machine_number (int):
Number of the machine for TMs, or 100 + the munber for HMs
Machine.version_group (version_group_id → VersionGroup.id)
Versions this entry applies to
Machine.item (item_id → Item.id)
ID of the corresponding Item
Machine.move (move_id → Move.id)
ID of the taught move
Relationships:
Machine.pokemon_moves (→ [PokemonMove])
True if this machine is a HM, False if it’s a TM
A Move attribute such as “snatchable” or “contact”.
Table name: move_flags (single: move_flag)
Has id, identifier, and name via move_flag_prose.
Internationalized strings:
MoveFlag.description (unicode – markdown) via move_flag_prose
A short description of the flag
Battle Palace move preference
Specifies how likely a Pokémon with a specific Nature is to use a move of a particular battl style in Battle Palace or Battle Tent
Table name: nature_battle_style_preferences
Columns:
NatureBattleStylePreference.nature (nature_id → Nature.id)
ID of the Pokémon’s nature
NatureBattleStylePreference.move_battle_style_id (→ MoveBattleStyle.id):
ID of the battle style
NatureBattleStylePreference.low_hp_preference (int):
Chance of using the move, in percent, if HP is under ½
NatureBattleStylePreference.high_hp_preference (int):
Chance of using the move, in percent, if HP is over ½
Undocumented:
NatureBattleStylePreference.battle_style
Specifies how a Nature affects a Pokéathlon stat
Table name: nature_pokeathlon_stats
Columns:
NaturePokeathlonStat.nature_id (→ Nature.id):
ID of the nature
NaturePokeathlonStat.pokeathlon_stat (pokeathlon_stat_id → PokeathlonStat.id)
ID of the stat
NaturePokeathlonStat.max_change (int):
Maximum change
A Pokéathlon stat, such as “Stamina” or “Jump”.
Table name: pokeathlon_stats (single: pokeathlon_stat)
Has id, identifier, and name via pokeathlon_stat_names.
Undocumented:
PokeathlonStat.nature_effects
Maps an ability to a Pokémon that can have it
Table name: pokemon_abilities
Columns:
PokemonAbility.pokemon_id (→ Pokemon.id):
ID of the Pokémon
PokemonAbility.ability_id (→ Ability.id):
ID of the ability
PokemonAbility.is_dream (bool):
Whether this is a Dream World ability
PokemonAbility.slot (int):
The ability slot, i.e. 1 or 2 for gen. IV
Maps an Egg group to a species; each species belongs to one or two egg groups
Table name: pokemon_egg_groups
Columns:
PokemonEggGroup.species_id (→ PokemonSpecies.id):
ID of the species
PokemonEggGroup.egg_group_id (→ EggGroup.id):
ID of the egg group
A Pokémon form’s performance in one Pokéathlon stat.
Table name: pokemon_form_pokeathlon_stats
Columns:
PokemonFormPokeathlonStat.pokemon_form (pokemon_form_id → PokemonForm.id)
The ID of the Pokémon form.
PokemonFormPokeathlonStat.pokeathlon_stat (pokeathlon_stat_id → PokeathlonStat.id)
The ID of the Pokéathlon stat.
PokemonFormPokeathlonStat.minimum_stat (int):
The minimum value for this stat for this Pokémon form.
PokemonFormPokeathlonStat.base_stat (int):
The default value for this stat for this Pokémon form.
PokemonFormPokeathlonStat.maximum_stat (int):
The maximum value for this stat for this Pokémon form.
The habitat of a Pokémon, as given in the FireRed/LeafGreen version Pokédex
Table name: pokemon_habitats (single: pokemon_habitat)
Has id, identifier, and name via pokemon_habitat_names.
Relationships:
PokemonHabitat.species (→ [PokemonSpecies])
Record of a move a Pokémon can learn
Table name: pokemon_moves
Columns:
PokemonMove.pokemon (pokemon_id → Pokemon.id)
ID of the Pokémon
PokemonMove.version_group (version_group_id → VersionGroup.id)
ID of the version group this applies to
PokemonMove.move (move_id → Move.id)
ID of the move
PokemonMove.pokemon_move_method_id (→ PokemonMoveMethod.id):
ID of the method this move is learned by
PokemonMove.level (int):
Level the move is learned at, if applicable
PokemonMove.order (int):
A sort key to produce the correct ordering when all else is equal
Relationships:
PokemonMove.machine (→ Machine)
PokemonMove.method (→ [PokemonMoveMethod])
A stat value of a Pokémon
Table name: pokemon_stats
Columns:
PokemonStat.pokemon (pokemon_id → Pokemon.id)
ID of the Pokémon
PokemonStat.stat (stat_id → Stat.id)
ID of the stat
PokemonStat.base_stat (int):
The base stat
PokemonStat.effort (int):
The effort increase in this stat gained when this Pokémon is defeated
Record of an item a Pokémon can hold in the wild
Table name: pokemon_items
Columns:
PokemonItem.pokemon (pokemon_id → Pokemon.id)
ID of the Pokémon
PokemonItem.version (version_id → Version.id)
ID of the version this applies to
PokemonItem.item (item_id → Item.id)
ID of the item
PokemonItem.rarity (int):
Chance of the Pokémon holding the item, in percent
Maps a type to a Pokémon. Each Pokémon has 1 or 2 types.
Table name: pokemon_types
Columns:
PokemonType.pokemon_id (→ Pokemon.id):
ID of the Pokémon
PokemonType.type_id (→ Type.id):
ID of the type
PokemonType.slot (int):
The type’s slot, 1 or 2, used to sort types if there are two of them
The damage multiplier used when a move of a particular type damages a Pokémon of a particular other type.
Table name: type_efficacy
Columns:
TypeEfficacy.damage_type (damage_type_id → Type.id)
The ID of the damaging type.
TypeEfficacy.target_type (target_type_id → Type.id)
The ID of the defending Pokémon’s type.
TypeEfficacy.damage_factor (int):
The multiplier, as a percentage of damage inflicted.
Maps a version group to a region that appears in it.
Table name: version_group_regions
Columns:
VersionGroupRegion.version_group (version_group_id → VersionGroup.id)
The ID of the version group.
VersionGroupRegion.region (region_id → Region.id)
The ID of the region.
The internal ID number a game uses for an item
Table name: item_game_indices
Columns:
ItemGameIndex.item (item_id → Item.id)
The database ID of the item
ItemGameIndex.generation (generation_id → Generation.id)
ID of the generation of games
ItemGameIndex.game_index (int):
Internal ID of the item in the generation
IDs the games use internally for locations
Table name: location_game_indices
Columns:
LocationGameIndex.location (location_id → Location.id)
Database ID of the locaion
LocationGameIndex.generation (generation_id → Generation.id)
ID of the generation this entry to
LocationGameIndex.game_index (int):
Internal game ID of the location
The number of a species in a particular Pokédex (e.g. Jigglypuff is #138 in Hoenn’s ‘dex)
Table name: pokemon_dex_numbers
Columns:
PokemonDexNumber.species (species_id → PokemonSpecies.id)
ID of the species
PokemonDexNumber.pokedex (pokedex_id → Pokedex.id)
ID of the Pokédex
PokemonDexNumber.pokedex_number (int):
Number of the Pokémon in that the Pokédex
The number of a Pokémon a game uses internally
Table name: pokemon_game_indices
Columns:
PokemonGameIndex.pokemon_id (→ Pokemon.id):
Database ID of the Pokémon
PokemonGameIndex.generation_id (→ Generation.id):
Database ID of the generation
PokemonGameIndex.game_index (int):
Internal ID the generation’s games use for the Pokémon
EXP needed for a certain level with a certain growth rate
Table name: experience
Columns:
Experience.growth_rate (growth_rate_id → GrowthRate.id)
ID of the growth rate
Experience.level (int):
The level
Experience.experience (int):
The number of EXP points needed to get to that level
Flavor text for genes that appears in a Pokémon’s summary. Sometimes called “characteristics”.
Table name: stat_hints (single: stat_hint)
Has id.
Columns:
StatHint.stat (stat_id → Stat.id)
ID of the highest stat
StatHint.gene_mod_5 (int):
Value of the highest stat modulo 5
Internationalized strings:
StatHint.message (unicode – plaintext) via stat_hint_names
The text displayed