Я пытаюсь создать таблицу по требованию.
def create_host_table(name):
"""Create host server status table.
Arguments:
name (str): name of the host.
"""
class HostMachineStatus(Base):
__tablename__ = '{0}{1}{2}'.format(HOST_TABLE_PREFIX, name, HOST_TABLE_SUFFIX)
id = Column(Integer, primary_key=True)
status = Column(String(7)) # online or offline
datemodified = Column('datemodified', TIMESTAMP, server_default=text(
'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'
)
)
datecreated= Column('datecreated', TIMESTAMP)
status_time_delta = ('status_time_delta', TIMESTAMP) # duration how long was online or offline.
table_name = HostMachineStatus.__tablename__
Base.metadata.create_all(engine, Base.metadata.tables[table_name],checkfirst=True)
, но вышеприведенный код выдает ошибку:
Traceback (most recent call last):
File "server_status.py", line 97, in <module>
main()
File "server_status.py", line 93, in main
create_host_table(host)
File "server_status.py", line 71, in create_host_table
Base.metadata.create_all(engine, Base.metadata.tables[table_name],checkfirst=True)
File "/home/rock64/.local/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line 4316, in create_all
ddl.SchemaGenerator, self, checkfirst=checkfirst, tables=tables
File "/home/rock64/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 2049, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "/home/rock64/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1618, in _run_visitor
visitorcallable(self.dialect, self, **kwargs).traverse_single(element)
File "/home/rock64/.local/lib/python3.6/site-packages/sqlalchemy/sql/visitors.py", line 138, in traverse_single
return meth(obj, **kw)
File "/home/rock64/.local/lib/python3.6/site-packages/sqlalchemy/sql/ddl.py", line 754, in visit_metadata
[t for t in tables if self._can_create_table(t)]
TypeError: 'Table' object is not iterable