Используя этот пример данных:
data = {'table1name': ['textcol1', 'textcol2'],
'table2name': ['textcol3', 'textcol4']}
Вот один из способов сделать это:
from sqlalchemy import Table, Column, Text, Integer, MetaData
metadata = MetaData()
for tblname, colnames in data.items():
Table(
tblname, metadata,
Column('id', Integer, primary_key=True),
*[Column(name, Text) for name in colnames]
)
Таблицы автоматически сопоставляются с их именами в словаре MetaData.tables
...
print(type(metadata.tables['table1name'])) # <class 'sqlalchemy.sql.schema.Table'>
... так что вы всегда можете получить к ним доступ для выполнения запросов, если у вас есть имя таблицы.
Это отобразит операторы создания таблицы:
from sqlalchemy.schema import CreateTable
for table in metadata.tables.values():
print(CreateTable(table))
Какие отпечатки:
CREATE TABLE table1name (
id INTEGER NOT NULL,
textcol1 TEXT,
textcol2 TEXT,
PRIMARY KEY (id) )
CREATE TABLE table2name (
id INTEGER NOT NULL,
textcol3 TEXT,
textcol4 TEXT,
PRIMARY KEY (id) )