В настоящее время я работаю над немного сложным диссон-ботом для мероприятия, управляемого сообществом.
Цель состоит в том, чтобы предоставить простой веб-интерфейс, в котором кланы могут входить в систему и делать все, что им нужно (например, зарегистрироваться).для события: просмотр статистики, просмотр команд и т. д.).
Я только что выполнил функции, которые будут обновлять роли пользователей в зависимости от таблицы, которая есть в моей базе данных MySQL.
Поскольку весь бот разногласий записанв асинхронном коде я хочу остаться со схемой, которую я уже установил.
Я уже читал об асинхронном коде и знаю, что я должен использовать что-то вроде модуля aiomysql
для python.
К сожалению, документы не оченьдля начинающих, и поэтому я задаю свой вопрос здесь:
Я хочу сделать что-то вроде этого:
async def queryDB(query):
loop = asyncio.get_event_loop()
def test_example(query):
conn = yield from aiomysql.connect(host='127.0.0.1', port=3306,
user='root', password='', db='mysql',
loop=loop)
cur = yield from conn.cursor()
yield from cur.execute(query)
print(cur.description)
results = yield from cur.fetchall()
yield from cur.close()
conn.close()
return results
var = loop.run_until_complete(test_example(query))
return var
Как вы можете видеть, я хочу, чтобы запрос был модульным и установить параметр ввызов функции.Конечно, я хочу, чтобы мои результаты были возвращены, чтобы я мог работать с ним позже.
Этот код продолжает давать сбой с кодом ошибки: RuntimeError: This event loop is already running
, и я не знаю, как это исправить.Вероятно, есть проблема с тем, как я справляюсь с циклами и как я вызываю свои функции.
Может кто-нибудь помочь, пожалуйста?