使用 Peewee 创建相同结构的多个 sql 数据库

Creating multiple sql databases of the same structure using Peewee

我希望创建 26 个独立的 sql 数据库,每个数据库都具有相同的结构。 (即字母表中的每个字母一个),理想情况下我可以从字典或类似的[即使用 database["a"] ] 访问对应于字母 a 的数据库。

我目前有以下代码,它使用 peewee 生成一个 sql 数据库(在本例中为字母 a)。

from peewee import *
database_location_a = "C:\database\a.db"
data_sql_a= SqliteDatabase(database_location_a, threadlocals=True, pragmas=(("synchronous", "off"),))           

class BaseModel(Model):
    class Meta:
        database = data_sql_a

class main_table(BaseModel):
    file_name = CharField(primary_key = True)
    year = CharField()

data_sql_a.connect()    
data_sql_a.create_tables([main_table])

此代码的某些部分我可以轻松循环(例如,我可以轻松创建文件位置字典)。然而,我被卡住的地方是给定位置被编码到 class Basemodel,我如何遍历那个 [即我是否需要 26 个单独的 classes,如果需要,我可以创建它而不需要 copy/paste class 26 次]?同样,如果 main_table 使用 BaseModel,我是否还需要 class 的 26 个单独实例?

我可能会以错误的方式解决这个问题,但想知道我可以采用什么方法来调整此代码以创建多个文件,而不需要多次 copy/paste 它?

我能够使用 peewee database proxy object 获得 运行 解决方案。

from peewee import *
database_proxy = Proxy()

class BaseModel(Model):
    class Meta:
        database = database_proxy  # Use proxy for our DB.

class main_table(BaseModel):
    file_name = CharField(primary_key = True)
    year = CharField()

import string
db_names = string.ascii_lowercase
# print(db_names) # abcdefghijklmnopqrstuvwxyz

'''
Loop over all the characters in the string and create databases in the current folder of this script
'''
for db_name in db_names:
    database = SqliteDatabase('{}.db'.format(db_name), threadlocals=True, pragmas=(("synchronous", "off"),))
    database_proxy.initialize(database)
    database_proxy.connect()
    database_proxy.create_tables([main_table])

根据 Proxy documentation,您可以在调用 database_proxy.initialize(database) 后像通常对 database 对象一样使用那个 database_proxy 变量。例如,connect()create_tables() 实际上是在 databasedatabase_proxy 上被调用的。