InterBase and Python

by Oct 3, 2015


Install PyDev using the Eclipse IDE

The instructions for installing PyDev are here:

In the Eclipse IDE I chose Help > Install Updates and Entered the URL for PyDev


Install Python3.4

I chose the Windows x86 .msi installer from here and installed to C:\Python34_2

Configure Eclipse to use Python

In Eclipse select Windows>Preferences

Under the Pydev tree, select PyDev> Interpreters> Python Interpreter

Click New and set the Python Interpreter name and executable to the previously install Python




Download the FDB 1.4.9 driver sources

The sources are available here

I extracted the sources to

Edit the sources to use the InterBase client library gds32.dll instead of the FireBird default library

There were 2 files that needed to be changed to work with Embarcadero InterBase XE7 instead of the Default FireBrid server.
Starting at line 1163


fb_library_name = find_library('fbclient.dll')
    if not fb_library_name:
        # let's try windows registry
        if PYTHON_MAJOR_VER == 3:
            import winreg
            import _winreg as winreg

        # try find via installed Firebird server
        baseKey = 'SOFTWARE\Firebird Project\Firebird Server\Instances'
        key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, baseKey)
        instFold = winreg.QueryValueEx(key,'DefaultInstance')
        fb_library_name = os.path.join(os.path.join(instFold[0], 'bin'), 'fbclient.dll')


fb_library_name = find_library('gds32.dll')
if not fb_library_name:
    # let's try windows registry
    if PYTHON_MAJOR_VER == 3:
        import winreg
        import _winreg as winreg

    # try find via installed Firebird server
    baseKey = 'SOFTWARE\Embarcadero\InterBase\Servers' 
    key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, baseKey)
    instFold = winreg.QueryValueEx(key,'RootDirectory')
    fb_library_name = os.path.join(os.path.join(instFold[0], 'bin'), 'gds32.dll')


Starting at line 1479


self.fb_interpret = fb_library.fb_interpret
self.fb_interpret.restype = ISC_LONG
self.fb_interpret.argtypes = [STRING, c_uint, POINTER(POINTER(ISC_STATUS))]


#self.fb_interpret = fb_library.fb_interpret
#self.fb_interpret.restype = ISC_LONG
#self.fb_interpret.argtypes = [STRING, c_uint, POINTER(POINTER(ISC_STATUS))]

Starting at line 542


result = api.fb_interpret(msg, 512, pvector)


result = api.isc_interprete(msg, pvector)           


Starting at line 923


verstr = self.db_info([isc_info_firebird_version])[isc_info_firebird_version]   


verstr = self.db_info([isc_info_version])[isc_info_version]


Starting at 1343


elif infoCode in (isc_info_version, isc_info_firebird_version):   


elif infoCode in (isc_info_version, isc_info_version):


Install the driver to your local Python Environment

After making the changes to and, you are now ready to install the driver to your Python Environment.

From the commandline navigate to the fdb1.4.9 directory.
C:\fdb-1.4.9>python.exe install

After installed you should see the message
Installed c:\python34_2\lib\site-packages\fdb-1.4.9-py3.4.egg
Processing dependencies for fdb==1.4.9
Finished processing dependencies for fdb==1.4.9

Write a simple test to connect to InterBase in Eclipse

In Eclipse select file > new > project > PyDev > PyDev project



More complete instructions can be found here

After creating a blank Python module, I added this code.

# The server is named 'localhost'; the database file is at 'C:\ProgramData\Embarcadero\InterBase\gds_db\examples\database\employee.gdb'.
con = fdb.connect(dsn='localhost:C:\ProgramData\Embarcadero\InterBase\gds_db\examples\database\employee.gdb', user='sysdba', password='masterkey')

cur = con.cursor()

# Execute the SELECT statement:
cur.execute("select * from country")

# Retrieve all rows as a sequence and print that sequence:
print (cur.fetchall())


This is all the code needed to import the driver, create a connection, create a cursor, select the data, and print the result.

After adding this code to a blank Python Module, select the Module > Run As > Python Run.