mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Fixed some MySQL import problems.
Tables weren't being defined as UTF-8 if that wasn't the server default. A lot of tables were trying to create erroneous auto_increment columns. Foreign key checks were pretty much fucking everything up.
This commit is contained in:
parent
33e659c79a
commit
20c9c23f51
3 changed files with 30 additions and 17 deletions
|
@ -27,6 +27,12 @@ def csvimport(engine_uri, dir='.'):
|
|||
|
||||
metadata.create_all()
|
||||
|
||||
# Oh, mysql-chan.
|
||||
# TODO try to insert data in preorder so we don't need this hack and won't
|
||||
# break similarly on other engines
|
||||
if 'mysql' in engine_uri:
|
||||
session.execute('SET FOREIGN_KEY_CHECKS = 0')
|
||||
|
||||
# This is a secret attribute on a secret singleton of a secret class that
|
||||
# appears to hopefully contain all registered classes as keys.
|
||||
# There is no other way to accomplish this, as far as I can tell.
|
||||
|
@ -50,6 +56,11 @@ def csvimport(engine_uri, dir='.'):
|
|||
|
||||
session.commit()
|
||||
|
||||
# Shouldn't matter since this is usually the end of the program and thus
|
||||
# the connection too, but let's change this back just in case
|
||||
if 'mysql' in engine_uri:
|
||||
session.execute('SET FOREIGN_KEY_CHECKS = 1')
|
||||
|
||||
|
||||
def csvexport(engine_uri, dir='.'):
|
||||
import csv
|
||||
|
|
|
@ -15,9 +15,11 @@ def connect(uri):
|
|||
if 'charset' not in uri:
|
||||
uri += '?charset=utf8'
|
||||
|
||||
# Tables should be InnoDB, in the event that we're creating them
|
||||
# Tables should be InnoDB, in the event that we're creating them, and
|
||||
# use UTF-8 goddammit!
|
||||
for table in metadata.tables.values():
|
||||
table.kwargs['mysql_engine'] = 'InnoDB'
|
||||
table.kwargs['mysql_charset'] = 'utf8'
|
||||
|
||||
### Connect
|
||||
engine = create_engine(uri)
|
||||
|
|
|
@ -114,31 +114,31 @@ class Pokemon(TableBase):
|
|||
|
||||
class PokemonAbility(TableBase):
|
||||
__tablename__ = 'pokemon_abilities'
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False)
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
ability_id = Column(Integer, ForeignKey('abilities.id'), nullable=False)
|
||||
slot = Column(Integer, primary_key=True, nullable=False)
|
||||
slot = Column(Integer, primary_key=True, nullable=False, autoincrement=False)
|
||||
|
||||
class PokemonDexNumber(TableBase):
|
||||
__tablename__ = 'pokemon_dex_numbers'
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False)
|
||||
generation_id = Column(Integer, ForeignKey('generations.id'), primary_key=True, nullable=False)
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
generation_id = Column(Integer, ForeignKey('generations.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
pokedex_number = Column(Integer, nullable=False)
|
||||
|
||||
class PokemonEggGroup(TableBase):
|
||||
__tablename__ = 'pokemon_egg_groups'
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False)
|
||||
egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False)
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
|
||||
class PokemonFlavorText(TableBase):
|
||||
__tablename__ = 'pokemon_flavor_text'
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False)
|
||||
version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False)
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
flavor_text = Column(Unicode(255), nullable=False)
|
||||
|
||||
class PokemonName(TableBase):
|
||||
__tablename__ = 'pokemon_names'
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False)
|
||||
language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False)
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
name = Column(Unicode(16), nullable=False)
|
||||
|
||||
class PokemonShape(TableBase):
|
||||
|
@ -149,16 +149,16 @@ class PokemonShape(TableBase):
|
|||
|
||||
class PokemonStat(TableBase):
|
||||
__tablename__ = 'pokemon_stats'
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False)
|
||||
stat_id = Column(Integer, ForeignKey('stats.id'), primary_key=True, nullable=False)
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
stat_id = Column(Integer, ForeignKey('stats.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
base_stat = Column(Integer, nullable=False)
|
||||
effort = Column(Integer, nullable=False)
|
||||
|
||||
class PokemonType(TableBase):
|
||||
__tablename__ = 'pokemon_types'
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False)
|
||||
pokemon_id = Column(Integer, ForeignKey('pokemon.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
type_id = Column(Integer, ForeignKey('types.id'), nullable=False)
|
||||
slot = Column(Integer, primary_key=True, nullable=False)
|
||||
slot = Column(Integer, primary_key=True, nullable=False, autoincrement=False)
|
||||
|
||||
class Stat(TableBase):
|
||||
__tablename__ = 'stats'
|
||||
|
@ -167,8 +167,8 @@ class Stat(TableBase):
|
|||
|
||||
class TypeEfficacy(TableBase):
|
||||
__tablename__ = 'type_efficacy'
|
||||
damage_type_id = Column(Integer, ForeignKey('types.id'), primary_key=True, nullable=False)
|
||||
target_type_id = Column(Integer, ForeignKey('types.id'), primary_key=True, nullable=False)
|
||||
damage_type_id = Column(Integer, ForeignKey('types.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
target_type_id = Column(Integer, ForeignKey('types.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||
damage_factor = Column(Integer, nullable=False)
|
||||
|
||||
class Type(TableBase):
|
||||
|
|
Loading…
Reference in a new issue