Описание структуры в sqlalchemy
Есть такая задача. есть определенная структура данных (ниже я прикрепляю sql, как он был создан). Есть задача описать класс для работы с этой таблицей. Раньше я не имел дела с sqlalchemy, поэтому возникла проблема. При запуске выдается ошибка именно в этой структуре.
SQL-запрос, где создается таблица с пользовательскими типами:
CREATE TYPE yt_video_stat AS (
viewCount text,
likeCount text,
dislikeCount text,
commentCount text
);
CREATE TYPE yt_channel_info AS (
title text,
description text,
customUrl text,
published text,
imgUrl text,
country text,
channelStatistics yt_ch_info_stat,
lastTenVideosStat FLOAT
);
CREATE TYPE yt_video_info AS (
title text,
description text,
imgUrl text,
tags text[],
defaultAudioLanguage text,
videoId text,
videoStatistics yt_video_stat,
er FLOAT
);
CREATE TYPE one_cell AS (
channelInfo yt_channel_info,
videosStat yt_video_info[]
);
CREATE TYPE cell AS (
collectionTime INTEGER,
cells one_cell[]
);
CREATE TABLE ytstat (
id INTEGER,
DATA cell[]
);
(В sql я тоже не силен)
Вот моя попытка описать класс:
from sqlalchemy import Column, Integer, String, Float
из sqlalchemy.ext.declarative импорт Declarative_base из sqlalchemy.dialects.postgresql импорт ARRAY из sqlalchemy_utils импорт CompositeType
Base = Declarative_base()
Класс YtData(Base):
__tablename__ = 'ytstat'
id = Column(Integer, primary_key=True)
data = Column(ARRAY(
CompositeType(
'a', [
Column('id', Integer),
Column('data', CompositeType(
'data', [
Column('collectionTime', Integer),
Column('cells', ARRAY(CompositeType(
'cell', [
Column('channelInfo', CompositeType(
'chif', [
Column('title', String),
Column('description', String),
Column('imgUrl', String),
Column('country', String),
Column('channelStatistics', CompositeType(
'chstat', [
Column('followers', String),
Column('views', String),
Column('videoCount', String)
]
)),
Column('er', Float)
]
)),
Column(ARRAY(
CompositeType(
'stat', [
Column('title', String),
Column('description', String),
Column('imgUrl', String),
Column('tags', ARRAY(String)),
Column('defaultAudioLanguage', String),
Column('videoId', String),
Column('videoStatistics', CompositeType(
'vstat', [
Column('viewCount', String),
Column('likeCount', String),
Column('dislikeCount', String),
Column('commentCount', String)
]
)),
Column('er', Float)
]
)
))
]
)))
]
))
]
)
))
Вот сама ошибка:
Traceback (most recent call last):
File "C:/Users/*/Desktop/*/run.py", line 4, in <module>
from models.yt_data import YtData
File "C:\Users\*\Desktop\*\models\yt_data.py", line 9, in <module>
class YtData(Base):
File "C:\Users\*\Desktop\*\models\yt_data.py", line 55, in YtData
Column('er', Float)
File "C:\Users\*\AppData\Local\Programs\Python\Python36-32\lib\site-
packages\sqlalchemy_utils\types\pg_composite.py", line 192, in __init__
self.name, [c.name for c in columns]
File "C:\Users\*\AppData\Local\Programs\Python\Python36-
32\lib\collections\__init__.py", line 404, in namedtuple
'keyword: %r' % name)
ValueError: Type names and field names cannot be a keyword: 'None'
Скажите, пожалуйста, чем это вызвано. И если я делаю что-то не так, укажите мне, пожалуйста. Заранее спасибо за советы и ответы)