Не удается подключиться к базе данных SQLite через Gino (асинхронная оболочка sqlalchemy)

#python #sqlite #sqlalchemy

#python #sqlite #sqlalchemy

Вопрос:

Я следил за документацией для Gino (асинхронная оболочка sqlalchemy), и когда я просто пытаюсь подключиться к базе данных sqlite, я получаю сообщение об ошибке. Вот код:

 db = Gino()


class Server(db.Model):
    __tablename__ = 'servers'

    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.Unicode(), default='noname')


async def main():
    await db.set_bind('sqlite:///:memory:')
    await db.gino.create_all()

asyncio.get_event_loop().run_until_complete(main())
  

Вот ошибка:

 AttributeError: 'SQLiteDialect_pysqlite' object has no attribute 'init_pool'
  

Означает ли это, что Gino точно не поддерживает использование базы данных SQLite, или что-то еще может быть не так?

Ответ №1:

Прямо в верхней части их README :

Сейчас (начало 2018) GINO поддерживает только один диалектный asyncpg.

Конечно, сейчас начало 2019 года, но, похоже, ничего не изменилось:

 ├── gino
│   ├── dialects
│   │   ├── __init__.py
│   │   ├── asyncpg.py
│   │   └── base.py
  

В asyncpg.py они импортируют PGDialect из sqlalchemy и расширяют ее, чтобы создать вызываемый класс, AsyncPGDialect который определяет init_pool метод.

Комментарии:

1. Хорошо, спасибо 🙂 Я не был уверен, относится ли это к необработанным sql-запросам или просто к поддержке в целом. Я создал базу данных в postgres и попытался связать ее таким образом, но и для этого я получаю ошибку. На этот раз я получаю другую ошибку, но, похоже, она не связана с gino. На случай, если вы знаете, что происходит не так, вот оно asyncpg.exceptions.InvalidPasswordError: password authentication failed for user "(my host username)" . В противном случае я поищу в другом месте или задам новый вопрос. В любом случае большое спасибо 🙂