【发布时间】:2020-01-24 13:54:20
【问题描述】:
我想在我的 MySQL 数据库中创建一个表,该表来自一个随时间动态变化的字典。
字典如下所示,其中指定了要创建的列的name + type。这是用户在项目运行之前填写的settings文件。
dct = {'ID':'String',
'Benefit':'Float',
'Premium':'Float'}
我知道如何通过在映射类中硬编码来创建它,如下所示:
from sqlalchemy import create_engine, Column, String, Float
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('mysql+mysqldb://...')
Base = declarative_base()
class Table(base):
__tablename__ = 'example'
id = Column(String(30), primary_key=True)
benefit = Column(Float)
Premium = Column(Float)
问题:如何在不硬编码名称和类型的情况下创建这些表,但从字典中减去这些表。
我也尝试从dict构造一个类:
class Policy:
def __init__(self, dictionary):
for k, v in dictionary.items():
setattr(self, k, v)
但不知道如何进一步实施。
类似问题:
【问题讨论】:
-
尝试从字符串动态创建
local或global范围内的变量被认为是不理想的做法,这似乎是所需的行为 -
我明白,但我不知道如何解决这个问题。这些设置存储在用户填写的
json中,并且必须从文件中创建表。具有指定的名称 + 类型。 -
您需要类似的问题 #2,此外还需要将您的
dct转换为实际Column实例的字典。
标签: python mysql orm sqlalchemy class-constructors