Python 无法初始化peewee';内存数据库

Python 无法初始化peewee';内存数据库,python,python-3.x,peewee,Python,Python 3.x,Peewee,我正在尝试设置内存数据库,以便使用peewee进行测试。但是,我无法初始化数据库: >>> import peewee >>> import Entities >>> db = peewee.SqliteDatabase(':memory:') >>> db.connect() True 上面这个没问题。然后我得到了以下错误: >>> db.bind(Entities.RouterSettings) Tr

我正在尝试设置内存数据库,以便使用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.
>db.bind(Entities.RouterSettings)
回溯(最近一次呼叫最后一次):
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2833行,在execute\U sql中
cursor=self.cursor(提交)
游标中的文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2819行
self.connect()
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2768行,在connect中
raise InterfaceError('错误,必须初始化数据库'
peewee.InterfaceError:错误,必须在打开连接之前初始化数据库。
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第3008行,在bind中
对于模型中的模型:
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第5630行,在__
返回iter(self.select())
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第6198行,在__
self.execute()
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第1698行,在内部
返回方法(self、数据库、*args、**kwargs)
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第1769行,在execute中
返回self.\u执行(数据库)
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第1943行,在\u execute中
cursor=database.execute(self)
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2848行,在execute中
返回self.execute_sql(sql,参数,commit=commit)
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2842行,在execute\U sql中
self.commit()
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2627行,在退出时__
重新发布(新类型,新类型(*exc_参数),回溯)
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第178行,在reraise中
通过_回溯(tb)提升值
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2833行,在execute\U sql中
cursor=self.cursor(提交)
游标中的文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2819行
self.connect()
文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2768行,在connect中
raise InterfaceError('错误,必须初始化数据库'
peewee.InterfaceError:错误,必须在打开连接之前初始化数据库。
Me实体是可以肯定的,因为我使用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.
db=peewee.SqliteDatabase(“:内存:”) >>>db.connect() 真的 >>>db.create_表([Entities.RouterSettings],safe=True) 回溯(最近一次呼叫最后一次): 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2833行,在execute\U sql中 cursor=self.cursor(提交) 游标中的文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2819行 self.connect() 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2768行,在connect中 raise InterfaceError('错误,必须初始化数据库' peewee.InterfaceError:错误,必须在打开连接之前初始化数据库。 在处理上述异常期间,发生了另一个异常: 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2995行,位于create\U表格中 模型。创建表格(**选项) 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第6012行,位于create_表中 cls.\u schema.create\u all(安全,**选项) 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第5225行,在create\u all中 创建表格(安全,**表格选项) 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第5111行,位于create_表中 self.database.execute(self.\u创建\u表(safe=safe,**选项)) 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2848行,在execute中 返回self.execute_sql(sql,参数,commit=commit) 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2842行,在execute\U sql中 self.commit() 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2627行,在退出时__ 重新发布(新类型,新类型(*exc_参数),回溯) 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第178行,在reraise中 通过_回溯(tb)提升值 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2833行,在execute\U sql中 cursor=self.cursor(提交) 游标中的文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2819行 self.connect() 文件“C:\Users\Kamil\AppData\Local\Programs\Python\Python37-32\lib\site packages\peewee.py”,第2768行,在connect中 raise InterfaceError('错误,必须初始化数据库' peewee.InterfaceError:错误,必须初始化数据库
>>> import peewee
>>> test_db = peewee.SqliteDatabase(':memory:', pragmas={'foreign_keys': 1})
import Entities
>>> models = [Entities.RouterSettings]
>>> test_db.bind(models, bind_refs=False, bind_backrefs=False)
>>> test_db.connect()
True
>>> test_db.create_tables(models)