Я использую 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