2012-11-05 84 views
4

我有一个应用程序需要支持Python 2.4和2.6。在2.6中,sqlite3替换了sqlite。除了paramstyle之外,还有什么需要担心的地方?这是一个体面的处理方式吗?支持sqlite和sqlite3

try: 
    import sqlite3 as sqlite 
except ImportError: 
    import sqlite 

... 

if sqlite.paramstyle == 'qmark': 
    query = 'SELECT foo FROM bar where baz = ?' 
else: 
    query = 'SELECT foo FROM bar where baz = %s' 
cursor.execute(query, params) 

回答

6

在python 2.4上,使用pysqlite package。这是完全相同的程序包,当它被重命名为sqlite3时,该程序包已添加到2.5版Python标准库中。

,因为它是相同的包,还有API中没有差异,而你只需要使用一个tryexcept ImportError测试:

try: 
    import sqlite3 
except ImportError: 
    from pysqlite2 import dbapi2 as sqlite3 
+0

这无疑使得它有点简单维护。谢谢! –