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()
|
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
|
# This is a secret attribute on a secret singleton of a secret class that
|
||||||
# appears to hopefully contain all registered classes as keys.
|
# appears to hopefully contain all registered classes as keys.
|
||||||
# There is no other way to accomplish this, as far as I can tell.
|
# 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()
|
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='.'):
|
def csvexport(engine_uri, dir='.'):
|
||||||
import csv
|
import csv
|
||||||
|
|
|
@ -15,9 +15,11 @@ def connect(uri):
|
||||||
if 'charset' not in uri:
|
if 'charset' not in uri:
|
||||||
uri += '?charset=utf8'
|
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():
|
for table in metadata.tables.values():
|
||||||
table.kwargs['mysql_engine'] = 'InnoDB'
|
table.kwargs['mysql_engine'] = 'InnoDB'
|
||||||
|
table.kwargs['mysql_charset'] = 'utf8'
|
||||||
|
|
||||||
### Connect
|
### Connect
|
||||||
engine = create_engine(uri)
|
engine = create_engine(uri)
|
||||||
|
|
|
@ -114,31 +114,31 @@ class Pokemon(TableBase):
|
||||||
|
|
||||||
class PokemonAbility(TableBase):
|
class PokemonAbility(TableBase):
|
||||||
__tablename__ = 'pokemon_abilities'
|
__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)
|
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):
|
class PokemonDexNumber(TableBase):
|
||||||
__tablename__ = 'pokemon_dex_numbers'
|
__tablename__ = 'pokemon_dex_numbers'
|
||||||
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)
|
||||||
generation_id = Column(Integer, ForeignKey('generations.id'), primary_key=True, nullable=False)
|
generation_id = Column(Integer, ForeignKey('generations.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||||
pokedex_number = Column(Integer, nullable=False)
|
pokedex_number = Column(Integer, nullable=False)
|
||||||
|
|
||||||
class PokemonEggGroup(TableBase):
|
class PokemonEggGroup(TableBase):
|
||||||
__tablename__ = 'pokemon_egg_groups'
|
__tablename__ = 'pokemon_egg_groups'
|
||||||
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)
|
||||||
egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False)
|
egg_group_id = Column(Integer, ForeignKey('egg_groups.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||||
|
|
||||||
class PokemonFlavorText(TableBase):
|
class PokemonFlavorText(TableBase):
|
||||||
__tablename__ = 'pokemon_flavor_text'
|
__tablename__ = 'pokemon_flavor_text'
|
||||||
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)
|
||||||
version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False)
|
version_id = Column(Integer, ForeignKey('versions.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||||
flavor_text = Column(Unicode(255), nullable=False)
|
flavor_text = Column(Unicode(255), nullable=False)
|
||||||
|
|
||||||
class PokemonName(TableBase):
|
class PokemonName(TableBase):
|
||||||
__tablename__ = 'pokemon_names'
|
__tablename__ = 'pokemon_names'
|
||||||
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)
|
||||||
language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False)
|
language_id = Column(Integer, ForeignKey('languages.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||||
name = Column(Unicode(16), nullable=False)
|
name = Column(Unicode(16), nullable=False)
|
||||||
|
|
||||||
class PokemonShape(TableBase):
|
class PokemonShape(TableBase):
|
||||||
|
@ -149,16 +149,16 @@ class PokemonShape(TableBase):
|
||||||
|
|
||||||
class PokemonStat(TableBase):
|
class PokemonStat(TableBase):
|
||||||
__tablename__ = 'pokemon_stats'
|
__tablename__ = 'pokemon_stats'
|
||||||
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)
|
||||||
stat_id = Column(Integer, ForeignKey('stats.id'), primary_key=True, nullable=False)
|
stat_id = Column(Integer, ForeignKey('stats.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||||
base_stat = Column(Integer, nullable=False)
|
base_stat = Column(Integer, nullable=False)
|
||||||
effort = Column(Integer, nullable=False)
|
effort = Column(Integer, nullable=False)
|
||||||
|
|
||||||
class PokemonType(TableBase):
|
class PokemonType(TableBase):
|
||||||
__tablename__ = 'pokemon_types'
|
__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)
|
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):
|
class Stat(TableBase):
|
||||||
__tablename__ = 'stats'
|
__tablename__ = 'stats'
|
||||||
|
@ -167,8 +167,8 @@ class Stat(TableBase):
|
||||||
|
|
||||||
class TypeEfficacy(TableBase):
|
class TypeEfficacy(TableBase):
|
||||||
__tablename__ = 'type_efficacy'
|
__tablename__ = 'type_efficacy'
|
||||||
damage_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)
|
target_type_id = Column(Integer, ForeignKey('types.id'), primary_key=True, nullable=False, autoincrement=False)
|
||||||
damage_factor = Column(Integer, nullable=False)
|
damage_factor = Column(Integer, nullable=False)
|
||||||
|
|
||||||
class Type(TableBase):
|
class Type(TableBase):
|
||||||
|
|
Loading…
Reference in a new issue