TODO

  • 修复 pyodbc 中的 unicode 问题。

  • 解决 MSSQL 中的超时问题。

  • PyPy。

  • 使用 https://pypi.ac.cn/project/psycopg2cffi/ 在 PyPy 下运行 SQLObject。

  • https://pypi.ac.cn/project/turbodbc/

  • 适用于 Linux 和 w32 的 PyODBC 和 PyPyODBC:SQLite (libsqliteodbc)。

  • https://pypi.ac.cn/project/JayDeBeApi/

  • Jython。

  • 引用表/列名,这些名称是保留关键字(order => “order”,values => values 适用于 MySQL)。

  • RelatedJoin.hasOther(otherObject[.id])

  • createParamsPre/Post

    class MyTable(SQLObject):
        class sqlmeta:
            createParamsPre = 'TEMPORARY IF NOT EXISTS'
            createParamsPre = {temporary: True, ifNotExists: True,
                               'postgres': 'LOCAL'}
            createParamsPost = 'ENGINE InnoDB'
            createParamsPost = {'mysql': 'ENGINE InnoDB',
                                'postgres': 'WITH OIDS'}
    
  • SQLObject.fastInsert().

  • IntervalCol

  • TimedeltaCol

  • 缓存连接结果。

  • 将测试 isinstance(obj, (tuple, list)) 反转为 not isinstance(obj, basestr) 以允许任何可迭代对象。

  • 始终使用 .lazyIter().

  • 优化 Iteration.next() - 使用 cursor.fetchmany().

  • 使用生成器代替循环 (fetchall => fetchone)。

  • 在 sqlmeta.getColumns() 中缓存列;在添加/删除列/连接时重置缓存。

  • 使 ConnectionHub 成为上下文管理器,而不是 .doInTransaction()。

  • 使 version_info 成为 namedtuple。

  • 表达式列 - 在 SELECT 中,但不在 INSERT/UPDATE 中。类似于此

    class MyClass(SQLObject):
        function1 = ExpressionCol(func.my_function(MyClass.q.col1))
        function2 = ExpressionCol('sum(col2)')
    
  • 异常层次结构。SQLObject 应将异常从低级驱动程序转换为一组一致的高级异常。

  • Memcache。

  • 重构 DBConnection 以使用参数化查询,而不是生成查询字符串。

  • PREPARE/EXECUTE。

  • 保护所有 .encode(),捕获 UnicodeEncode 异常并重新引发 Invalid。

  • 更多类型的连接,以及更强大的连接结果(更接近 select 的工作方式)。

  • 更好的连接 - 基于 ForeignKey/MultipleJoin/RelatedJoin 在 .select() 中自动连接。

  • 弃用,然后删除 connectionForOldURI。

  • 从 setuptools 切换到 distribute。

  • 支持所有后端的 PyODBC 驱动程序。

  • dbms 是针对 IBM DB2、Firebird、MSSQL Server、MySQL、Oracle、PostgreSQL、SQLite 和 ODBC 的 DB API 驱动程序的 DB API 包装器。

  • dict API:使用 getitem 接口进行列访问,而不是 getattr;将 getattr 保留仅供内部属性使用;这有助于避免与内部属性发生冲突。

  • 或将列值访问移动到单独的命名空间,例如 .c:row.c.column。

  • 更多文档。

  • RSS 2.0 和 Atom 新闻源。

  • 使用 DBUtils,尤其是 SolidConnection。

  • _fromDatabase 目前不支持不符合常规命名方案的 ID。它应该这样做。您仍然可以使用 _idName_fromDatabase
  • 支持更多数据库。Oracle 方面已经引起了兴趣,并且取得了一些进展。IWBN 拥有 Informix 和 DB2 驱动程序。
  • 更好的事务支持 - 目前您可以对数据库使用事务,但对象没有事务感知,因此无法回滚非数据库持久性。
  • 乐观锁和其他处理并发性的技术。
  • SQLObject 性能分析以识别瓶颈。
  • 使用 FormEncode 验证和表单生成包增加钩子,以便可以更直接、更轻松地发布 SQLObject 类(读取:架构)进行编辑。(第一步:将架构生成方法放入 sqlmeta 类中)
  • 将 SQLObject.create*、.create*SQL 方法与 DBPI.create* 方法合并。
  • 使 SQLObject 基于 Unicode,而不仅仅是 Unicode 感知。所有内部处理都应使用 Unicode 字符串,对于非 Unicode 数据库 API 驱动程序,应进行与 ASCII 字符串之间的转换。
  • 允许覆盖 ConsoleWriter/LogWriter 类和 makeDebugWriter 函数。
  • 类型注释和 mypy 测试。
Get SQLObject at SourceForge.net. Fast, secure and Free Open Source software downloads