Неиспользуемые имена столбцов, несмотря на отражение.Inspector.from_engine.get_columns, показывающие наличие столбцов - PullRequest
0 голосов
/ 13 октября 2019

Я использую sqlalchemy ORM

У меня есть four tables в database

['eventtable', 'locationTable', 'activityTable', 'usernameTable']

, когда я проверяю имена столбцов, используя sqlalchemy.engine.reflection.Inspector.get_columns

Я получаю список имен столбцов activityTable, я получаю все имена

[{'name': 'campaignid', 'type': INTEGER (), 'nullable': True, 'default': None, 'autoincrement': 'auto', 'primary_key': 0}, {'name': 'username', 'type ': TEXT (),' nullable ': True,' default ': None,' autoincrement ':' auto ',' primary_key ': 0}, {' name ':' campaignname ',' type ': TEXT (), 'nullable': True, 'default': None, 'autoincrement': 'auto', 'primary_key': 0}, {'name': 'device', 'type': TEXT (), 'nullable': True, 'default': нет, 'autoincrement': 'auto', 'primary_key': 0}, {'name': 'mediaid', 'type': INTEGER (), 'nullable': True, 'default': None, 'autoincrement': 'auto', 'primary_key': 0}, {'name': 'fromdate', 'type': TEXT (), 'nullable': True, 'default': None, 'autoincrement': 'auto ',' primary_key ': 0}, {' name':' todate ',' type ': TEXT (),' nullable ': True,' default ': None,' autoincrement ':' auto ',' primary_key ': 0}, {' name ':' popupid ','type': INTEGER (), 'nullable': True, 'default': None, 'autoincrement': 'auto', 'primary_key': 0}, {'name': 'sex', 'type': TEXT (), 'nullable': True, 'default': None, 'autoincrement': 'auto', 'primary_key': 0}, {'name': 'isactive', 'type': TEXT (), 'nullable':True, 'default': None, 'autoincrement': 'auto', 'primary_key': 0}, {'name': "'isdeleted'", 'type': TEXT (), 'nullable': True, 'default': Нет,' autoincrement ':' auto ',' primary_key ': 0}]

, но когда я пытаюсь вставить значения

def loadDatabaseExtractTable(dbFileLoaction,tableName):

    # Load the exisiting db onto engine
    engine = create_engine(dbFileLoaction,connect_args={'check_same_thread': False})
    # call MetaData
    metadata = MetaData()
    # Extract a specific table from db
    extractedTable = Table(tableName, metadata, autoload=True, autoload_with=engine)
    # connect to the engine
    connection = engine.connect()
    # Session to perform CRUD operations
    Session = sessionmaker(bind=engine)
    session = Session()

    return session,extractedTable,engine

activityTableName = 'activityTable'
activityTableSession,activityTable,activityTableEngine = loadDatabaseExtractTable(c1_database_file,activityTableName)

current_campaign_id = 0
campaignName= 'ahjs'
deviceName= 'assd'
selected_media_id = 1
fromDate = 'jkhdsf'
toDate = 'lksdf'
selected_popup_id = 1
gender ='jkh'
campaign_active = True

activity_details = {'campaignid':current_campaign_id+1,'username':'test1','campaignname':campaignName\
                    ,'device':deviceName,'mediaid':selected_media_id,'fromdate':fromDate,'todate':toDate\
                    ,'popupid':selected_popup_id,'gender':gender,'isactive':str(campaign_active),'isdeleted':'False'}

i = insert(activityTable).values(activity_details)
activityTableSession.execute(i)
activityTableSession.commit()

, я получаю эту ошибку

Трассировка (последний последний вызов):

Файл "server_v0.1.py", строка 112, в activityTableSession.execute (i)

File "/ home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/orm/session.py ", строка 1269, в предложении execute, params или {}

File" / home/ffffff/.virtualenvs/flask-app / lib / python3.6 / site-packages / sqlalchemy / engine / base.py ", строка 988, в файле execute return meta (self, multiparams, params)

Файл" /home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/elements.py ", строка 287, в _execute_on_connection return connection._execute_clauseelement (self, multiparams, params)

File" / home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/engine/base.py ", строка 1098, в _execute_clauseelement else None,

File" ", строка 1,в файле "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", строка 462, при компиляции возвращаем self._compiler (dialect, bind = bind,** kw)

Файл "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", строка 468, в _компиляторе, возвращающем диалект.statement_compiler (диалект, self, ** квт)

Файл "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/compiler.py",строка 562, в init Скомпилировано. init (self, dialect, Statement, ** kwargs)

File "/home/ffffff/.virtualenvs/flask-app/lib / python3.6 / site-packages / sqlalchemy / sql / compiler.py ", строка 319, в init self.string = self.process (self.statement, ** compile_kwargs)

Файл "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/compiler.py", строка 350, в процессе возврата obj._compiler_dispatch (self, ** kwargs)

Файл "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/visitors.py", строка 91, в _compiler_dispatch возвращает meta (self,** kw)

Файл "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/compiler.py", строка 2387, в собственной папке visit_insert,insert_stmt, crud.ISINSERT, ** кВт

Файл "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/crud.py", строка 62, в _setup_crud_params возвращает _get_crud_params (компилятор, stmt, **kw)

Файл "/home/ffffff/.virtualenvs/flask-app/lib/python3.6/site-packages/sqlalchemy/sql/crud.py", строка 177, в _get_crud_params% (",".join ("% s "% c для c в проверке)) sqlalchemy.exc.CompileError: Неполные имена столбцов: popupid, mediaid, todate, campaignid, isactive, isdeleted, название кампании, fromdate

Трудно решить эту проблему? столбец существует, но все еще получает sqlalchemy.exc.CompileError: Unconsumed column names

, пожалуйста, руководство, я поднял ту же проблему на sqlalchemy github

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