import sqlite3
db_file = 'data/raw/db.sqlite'
tables = {
'Players': {
'id': 'INTEGER PRIMARY KEY',
'fname': 'TEXT',
'lname': 'TEXT',
'dob': 'DATETIME',
'age': 'INTEGER',
'height': 'INTEGER', # inches
'weight': 'INTEGER', # pounds
'rank': 'INTEGER',
'rhlh': 'INTEGER', # 0 - right, 1 - left
'bh': 'INTEGER', # 0 - onehand, 1 - twohand
'city': 'TEXT', # birth city
'county': 'TEXT' #birth country
}
}
conn = sqlite3.connect(db_file)
c = conn.cursor()
for table in tables.keys():
for cols in tables[table].keys():
c.execute("CREATE TABLE {} ( \
{} {})".format(table, cols, tables[table][cols]))
c.close()
conn.close()
Есть ли способ просто превратить этот tables
вложенный объект dict в таблицу БД? Я получаю ошибку sqlite3.OperationalError: table Players already exists
, которая очевидна, потому что я звоню CREATE TABLE
более одного раза.
У кого-нибудь есть хитрость в создании подобной БД с использованием вложенного словаря, который в конечном итоге будет содержать несколько таблиц? Это ужасная практика? Что я должен делать по-другому?
Спасибо!
КАК Я РЕШЕН:
Ответ ниже в комментариях.