Firebird Python Drivers: Current state and future

Embed Size (px)

DESCRIPTION

This talk will update you on current state of Firebird connectivity for Python (with a surprise!), and plans for future development

Citation preview

  • 1. Firebird drivers for Python Pavel Csa IBPhoenix Firebird Conference 2011

2. Agenda

  • Driver 1: KinterbasDB 3. Driver 2: firebirdsql 4. Driver 3: fdb 5. The Future

6. KInterbasDB

  • Current version - 3.3.0 7. Supports: Python 2.6/2.7, Firebird 2.0+ 8. Written in Python and C (extension) 9. Extensive list of features 10. Adopted by Firebird Project

11. KinterbasDB - Features

  • Python DB API 2.0 (with extensions) 12. Prepared statements 13. Transactions:
    • Transaction parameters 14. Multiple transactions per connection 15. Distributed transactions 16. Savepoints 17. Retaining

18. KinterbasDB Features (cont.)

  • Named cursors 19. Parameter conversions:
    • Implicit Conversion of Input Parameters from Strings 20. Dynamic Type Translation with custom translators support
  • Materialized and streamed BLOBs 21. Support for Firebird Arrays 22. Services (but no Trace)

23. KinterbasDB Features (cont.)

  • Connection timeouts (with user callbacks) 24. Firebird Events 25. Database INFO API

26. KinterbasDB - Shortcomings

  • No Python 3 support 27. Only for CPython 28. Very complex code 29. Backward compatibility baggage 30. No active development

31. firebirdsql

  • Created by Hajime Nakagami 32. Current version: 0.6.3 33. Pure-Python driver on top of Firebird wire protocol 34. Supports: Python 3.0+/2.6+, Firebird 2.0+? 35. Primary development for Python 3/FB 2.5

36. Firebirdsql - Features

  • Supports Python DB API 2.0 (+row_mapping) 37. Multiple transactions per connection, savepoints, retaining 38. Prepared statements 39. Firebird Services, partial: info,backup/restore,sweep,TRACE 40. Potentially works on other Python implementations 41. Unicode/Character set conversions

42. Firebirdsql - Shortcomings

  • No transaction parameters 43. No stored procedures (yet) 44. No RETURNING 45. No streamed BLOBs, No BLOB parameters 46. No Firebird Arrays 47. Only remote server support 48. Limited support for SQL dialect 1 49. Still NOT usable for production

50. fdb

  • Based on old experiment with ctypes module 51. Created for this conference 52. Pure-Python driver on top of Firebird client library (using ctypes) 53. Supports Python 2.6+, Firebird 2.0+ 54. Primary development for Python 2.6/FB 2.5 55. Potentially runs on Python 3 and IronPython

56. Fdb - Features

  • Supports Python DB API 2.0 (+row_mapping) 57. Multiple transactions per connection, transaction parameters,savepoints, retaining 58. Unicode/Character set conversions 59. Firebird Services, partial: everything KinterbasDB does (i.e. NO TRACE)

60. Fdb - Shortcomings

  • No stored procedures (yet) 61. No RETURNING 62. No streamed BLOBs 63. No Firebird Arrays 64. No prepared statements 65. NOT production ready, but in many aspects more mature than firebirdsql

66. The Future

  • Finish fdb as drop-in replacement for KinterbasDB 67. Abstract the inner API:
    • ctypes implementation 68. wire protocol
  • ... 69. Profit!

70. Questions? Pavel Csa [email_address] IBPhoenix www.ibphoenix.com