SystemError:已禁用连接

时间:2011-03-10 19:06:17

标签: python mysql ironpython

这是一个非常模糊的错误,我似乎无法获得很多背景,所以请提出任何可能有助于澄清的问题。我会尽力给你尽可能多的背景。

我正在使用逗号分隔的parantheses描述值列表(即insert into table (a, b, c) values (1,2,3),(4,5,6),(7,8,9);)为mysql创建一大堆插入语句。我正在创建数千个这样的元组,用','连接它们并将它们插入一个陈述中。

问题是我在问题中收到了错误。

每次我有一个新的插入语句时,我甚至会使用连接到数据库。如果我愿意的话,我可以提供代码,但它都隐藏在with语句后面。

我认为没有理由断开与DB的连接....

编辑:为什么不呢。这是代码。在for循环中:

with SQLConnection(DATASOURCES[SCHEDULEDB]) as db:
    db.execute_sql( command + ' ' + ','.join(block) + ';' )
几个def:

def execute_sql(self, query):
    if query.startswith('select'):
        return self.execute_read(query)
    else:
        return self.execute_other(query)

def execute_other(self,query):
    adapter = OdbcCommand(query,self.connection)
    adapter.ExecuteNonQuery()
    return True

2 个答案:

答案 0 :(得分:1)

我不确定你为什么会得到你得到的错误。也许它与创建非常长的SQL语句有关?无论如何,你应该 总是使用参数化的SQL语句;避免手动编写SQL(带参数):

sql = 'INSERT INTO table (a,b,c) VALUES (%s,%s,%s)'
args = [(1,2,3),(4,5,6),(7,8,9)]
cursor.executemany( sql, args )

答案 1 :(得分:0)

事实证明,我试图插入数据库的一些值大于我为其分配的VarChar大小。例外不是很有启发性。我最终检查以确保我插入的每个值小于为其分配的大小,如果不是,则引发异常。