Столбец должен быть построен с непустым именем - PullRequest
0 голосов
/ 05 марта 2019

У меня есть следующий код:

import dbabslayer
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Table, Column, Integer, String, MetaData

dbObj = dbabslayer.DbAbsLayer();

meta = MetaData()
base = declarative_base()

class TrEnAhmadaliTable(declarative_base()):
        __tablename__ = 'tr_en_ahmadali';       
        id = Column(Integer,primary_key = True,autoincrement = True)
        sura = Column(Integer)
        aya = Column(Integer)
        aya_text = Column(Unicode(convert_unicode=False))

tr_en_aliahmadi = Table('tr_en_ahmadali',base.metadata,
       Column(Integer,primary_key = True,autoincrement = False, nullable=False),
       Column('sura', Integer, nullable=False),
       Column('aya', Integer, nullable=False),
       Column('aya_text', UnicodeText(convert_unicode=False), nullable=False)
)

Но я получаю следующую ошибку:

MetaData(bind=None)
Traceback (most recent call last):
  File "./haq.py", line 10, in <module>
    from fetchrecordintomemory import *
  File "/home/mohsen/codes/haq/fetchrecordintomemory.py", line 5, in <module>
    import tables
  File "/home/mohsen/codes/haq/tables.py", line 119, in <module>
    Column('aya_text', UnicodeText(convert_unicode=False), nullable=False)
  File "/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py", line 469, in __new__
    metadata._remove_table(name, schema)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/langhelpers.py", line 67, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 277, in reraise
    raise value
  File "/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py", line 464, in __new__
    table._init(name, metadata, *args, **kw)
  File "/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py", line 557, in _init
    self._init_items(*args)
  File "/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py", line 105, in _init_items
    item._set_parent_with_dispatch(self)
  File "/usr/lib/python3/dist-packages/sqlalchemy/sql/base.py", line 442, in _set_parent_with_dispatch
    self._set_parent(parent)
  File "/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py", line 1407, in _set_parent
    "Column must be constructed with a non-blank name or "
sqlalchemy.exc.ArgumentError: Column must be constructed with a non-blank name or assign a non-blank .name before adding to a Table.

Как мне ее решить?

1 Ответ

2 голосов
/ 06 марта 2019

Похоже, ваша проблема связана с Column(Integer,primary_key = True,autoincrement = False, nullable=False) Посмотрите в документах на сигнатуру функции для Column. - первым аргументом для столбца должен быть столбец «имя», за которым следует столбец «тип».

Первый аргумент должен быть назван примерно как "aya_id".

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