Определение класса sql-alchemy: цикл для назначения типов столбцов - PullRequest
0 голосов
/ 17 сентября 2018

Можно ли избежать ввода имен и типов данных столбцов при определении класса для sql alchemy, например, предположим, что у вас есть:

from sqlalchemy import Column, Date, Integer, String, Numeric 
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Fruit(Base):

   __tablename__ = 'Fruits'

    # names and datatypes of columns
    date_of_record = Column(Date, primary_key=True)
    number_of_apples = Column(Integer)
    number_of_pears = Column(Integer)

Возможно ли воссоздать этот последний раздел с помощью цикла? Например, если вы хотите, чтобы в качестве входных данных использовались имена и типы столбцов:

column_names = ['date_of_record', 'number_of_apples', 'number_of_pears']
column_types = [Date, Integer, Integer]

class Fruit(Base):

  __tablename__ = 'Fruits'

  def __init__(self, column_names, column_types):
        for index, (name, type) in enumerate(zip(column_names, column_types)):
            if index == 0:   
                setattr(self, name, Column(type, primary_key = True))
            else:
                setattr(self, name, Column(type))

Однако при этом выдается ArgumentError: Mapper Mapper | Fruit | Fruits не удалось собрать столбцы первичного ключа для сопоставленной таблицы 'Fruits'

Кто-нибудь может предоставить рабочий пример того, как вы можете использовать имена и типы столбцов в качестве переменных в определении класса при использовании sql alchemy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...