Я пытаюсь установить базу данных в памяти для тестирования с помощью peewee. Однако я не могу инициализировать базу данных:
>>> import peewee
>>> import Entities
>>> db = peewee.SqliteDatabase(':memory:')
>>> db.connect()
True
С этим все в порядке. Тогда я получил следующую ошибку:
>>> db.bind(Entities.RouterSettings)
Traceback (most recent call last):
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2833, in execute_sql
cursor = self.cursor(commit)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2819, in cursor
self.connect()
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2768, in connect
raise InterfaceError('Error, database must be initialized '
peewee.InterfaceError: Error, database must be initialized before opening a connection.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 3008, in bind
for model in models:
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 5630, in __iter__
return iter(self.select())
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 6198, in __iter__
self.execute()
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 1698, in inner
return method(self, database, *args, **kwargs)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 1769, in execute
return self._execute(database)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 1943, in _execute
cursor = database.execute(self)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2848, in execute
return self.execute_sql(sql, params, commit=commit)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2842, in execute_sql
self.commit()
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2627, in __exit__
reraise(new_type, new_type(*exc_args), traceback)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 178, in reraise
raise value.with_traceback(tb)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2833, in execute_sql
cursor = self.cursor(commit)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2819, in cursor
self.connect()
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2768, in connect
raise InterfaceError('Error, database must be initialized '
peewee.InterfaceError: Error, database must be initialized before opening a connection.
С сущностями все в порядке, поскольку я использую peewee для управления данными в базе данных sqlite без проблем. Они пришли, когда я попытался создать тесты с базой данных в памяти. Та же самая ошибка происходит, когда я пытаюсь создать таблицы:
>>> db = peewee.SqliteDatabase(':memory:')
>>> db.connect()
True
>>> db.create_tables([Entities.RouterSettings], safe=True)
Traceback (most recent call last):
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2833, in execute_sql
cursor = self.cursor(commit)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2819, in cursor
self.connect()
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2768, in connect
raise InterfaceError('Error, database must be initialized '
peewee.InterfaceError: Error, database must be initialized before opening a connection.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2995, in create_tables
model.create_table(**options)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 6012, in create_table
cls._schema.create_all(safe, **options)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 5225, in create_all
self.create_table(safe, **table_options)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 5111, in create_table
self.database.execute(self._create_table(safe=safe, **options))
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2848, in execute
return self.execute_sql(sql, params, commit=commit)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2842, in execute_sql
self.commit()
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2627, in __exit__
reraise(new_type, new_type(*exc_args), traceback)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 178, in reraise
raise value.with_traceback(tb)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2833, in execute_sql
cursor = self.cursor(commit)
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2819, in cursor
self.connect()
File "C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site-packages\peewee.py", line 2768, in connect
raise InterfaceError('Error, database must be initialized '
peewee.InterfaceError: Error, database must be initialized before opening a connection.
Я использую:
- Python 3.7.1
- Peewee 3.9.2
Кто-нибудь сталкивался с подобной проблемой?