Аналогичный код по записи в базу данных у меня в другом месте работает, но данный выдает ошибки. Сначала в машине состояний пишу данные в data:
data['lineBuissName'] = oneLineBusinessInfo[0]['name']
data['lineBuissId'] = int(oneLineBusinessInfo[0]['id'])
print(data)
compId = await dbcompanies.addNewCompany(state)
await state.finish()
successText = '''
Успешно зарегестрированы
'''
В этом месте когда вывожу print-ом data, то там все значения есть. Затем код функции addNewCompany:
async def addNewCompany (state):
# Подключиться к базе данных.
connection = pymysql.connect(host='127.0.0.1',
user='root',
password='015153771Fast',
db='jobbot',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
print ("connect successful addNewCompany!")
cursor = connection.cursor()
try:
async with state.proxy() as data:
print(data)
# SQL
sql = "INSERT INTO `companies` "\
"(`tg-id`, `tg-login`, `company-name`, `line-business`, `line-business-id`) "\
"VALUES (%s, %s, %s, %s, %s)"
# Выполнить команду запроса (Execute Query).
# есть пользователь с этим ником в базе
res = cursor.execute(sql, tuple(data.values()))
connection.commit()
return res
finally:
# Закрыть соединение (Close connection).
connection.close()
И вот здесь, когда вывожу print-ом data, то уже последних двух значений почему-то нет.
И возникают такие ошибки:
Task exception was never retrieved
future: exception=TypeError('not enough arguments for format string')>
Traceback (most recent call last):
File "D:\OpenServer\domains\jobbot.local\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 415, in _process_polling_updates
for responses in itertools.chain.from_iterable(await self.process_updates(updates, fast)):
File "D:\OpenServer\domains\jobbot.local\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 235, in process_updates
return await asyncio.gather(*tasks)
File "D:\OpenServer\domains\jobbot.local\venv\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
response = await handler_obj.handler(*args, **partial_data)
File "D:\OpenServer\domains\jobbot.local\venv\lib\site-packages\aiogram\dispatcher\dispatcher.py", line 256, in process_update
return await self.message_handlers.notify(update.message)
File "D:\OpenServer\domains\jobbot.local\venv\lib\site-packages\aiogram\dispatcher\handler.py", line 116, in notify
response = await handler_obj.handler(*args, **partial_data)
File "D:\OpenServer\domains\jobbot.local\handlers\naked.py", line 366, in get_linebuiss
compId = await dbcompanies.addNewCompany(state)
File "D:\OpenServer\domains\jobbot.local\db\dbcompanies.py", line 45, in addNewCompany
res = cursor.execute(sql, tuple(data.values()))
File "D:\OpenServer\domains\jobbot.local\venv\lib\site-packages\pymysql\cursors.py", line 146, in execute
query = self.mogrify(query, args)
File "D:\OpenServer\domains\jobbot.local\venv\lib\site-packages\pymysql\cursors.py", line 125, in mogrify
query = query % self._escape_args(args, conn)
TypeError: not enough arguments for format string