#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)"
. В противном случае я поищу в другом месте или задам новый вопрос. В любом случае большое спасибо 🙂