我想将Pewee从v2.4.7升级到v2.6.3,以便使用get_or_create方法。但是,在更新我的连接设置之后,连接设置就坏了。
我使用了以下超类来启用SQLite (2.6.3)的外键约束:
class SqliteFKDatabase(SqliteDatabase):
def initialize_connection(self):
self.execute_sql('PRAGMA foreign_keys=ON;')
return self ..。使用下列连接设置代码:
db = SqliteFKDatabase(None)
init_db(path_to_db)
def init_db(path_to_db):
db.init(path_to_db)
db.connect()
db.initialize_connection() 但是,当我使用新版本的Peewee运行这段代码时,会出现以下错误:
File "./script.py", line 40, in init_db
db.connect()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/peewee.py", line 3130, in connect
self.initialize_connection(self.__local.conn)
TypeError: initialize_connection() takes 1 positional argument but 2 were given我只知道将self传递给initialize_connection(),所以有人能帮我找出第二个参数可以给我带来什么,以及如何修复这个bug吗?
编辑
更改类声明方法修复了错误。
class SqliteFKDatabase(SqliteDatabase):
def initialize_connection(self, conn):
self.execute_sql('PRAGMA foreign_keys=ON;')发布于 2015-07-23 18:21:00
initialize_connection接受一个参数,新创建的Connection对象.
这应该是可行的:
class SqliteFKDatabase(SqliteDatabase):
def initialize_connection(self, conn):
cursor = conn.cursor()
cursor.execute('PRAGMA foreign_keys=ON;') 您的init_db不需要调用initialize_connection --这是由Peewee处理的:
def init_db(path_to_db):
db.init(path_to_db)
db.connect() https://stackoverflow.com/questions/31594299
复制相似问题