首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库连接设置在从2.4升级到Peewee 2.6后中断

数据库连接设置在从2.4升级到Peewee 2.6后中断
EN

Stack Overflow用户
提问于 2015-07-23 17:30:35
回答 1查看 244关注 0票数 0

我想将Pewee从v2.4.7升级到v2.6.3,以便使用get_or_create方法。但是,在更新我的连接设置之后,连接设置就坏了。

我使用了以下超类来启用SQLite (2.6.3)的外键约束:

代码语言:javascript
复制
class SqliteFKDatabase(SqliteDatabase):                                                                                                                                              
    def initialize_connection(self):                                                                                                                                                 
        self.execute_sql('PRAGMA foreign_keys=ON;')                                                                                                                                  
        return self 

..。使用下列连接设置代码:

代码语言:javascript
复制
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运行这段代码时,会出现以下错误:

代码语言:javascript
复制
 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吗?

编辑

更改类声明方法修复了错误。

代码语言:javascript
复制
    class SqliteFKDatabase(SqliteDatabase):                                                                                                                                              
        def initialize_connection(self, conn):                                                                                                                                           
            self.execute_sql('PRAGMA foreign_keys=ON;')
EN

回答 1

Stack Overflow用户

发布于 2015-07-23 18:21:00

initialize_connection接受一个参数,新创建的Connection对象.

这应该是可行的:

代码语言:javascript
复制
class SqliteFKDatabase(SqliteDatabase):                                                                                                                                              
    def initialize_connection(self, conn):                                                                                                                                                 
        cursor = conn.cursor()
        cursor.execute('PRAGMA foreign_keys=ON;')                                                                                                                                  

您的init_db不需要调用initialize_connection --这是由Peewee处理的:

代码语言:javascript
复制
def init_db(path_to_db):                                                                                                                                                        
    db.init(path_to_db)                                                                                                                                                                      
    db.connect()                                                                                                                                                                     
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31594299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档