Python is a high-level, general purpose, scripting language that can be used for a wide variety of programming tasks.
Editor's Note: This article is excerpted from chapter 4 of QuickStart Guide to Db2 Development with Python, by Roger Sanders.
Named after the British comedy television show Monty Python’s Flying Circus, Python was created by Guido Van Rossum at the National Research Institute for Mathematics and Computer Science in 1989. (The first Python interpreter was developed as a hobby; the second was made generally available on October 16, 2000.) Since then, its following has steadily grown, and according to the March 2019 TIOBE Programming Community Index, it is the third most popular programming language in use today.
Python is derived from many other languages, including ABC, Modula-3, C, C++, Algol-68, SmallTalk, and UNIX shells like ksh and bash. Consequently, it offers a variety of basic data types: numbers (floating point, complex, and unlimited-length long integers); strings (ASCII and Unicode); lists; tuples; and dictionaries. It also provides a number of built- in functions, as well as several constructs (for example, a loop construct that can iterate over items in a collection is available). In addition, Python comes with a broad standard library that consists of hundreds of modules that can be used to perform many common programming operations, such as connecting to a Web server, searching text using regular expressions, and reading or modifying files.
Other features that Python provides include:
- Support for functional and structured programming methods as well as object-oriented programming (i.e., classes, objects, and inheritance)
- Automatic memory management (i.e., “garbage collection”)
- Support for raising and catching exceptions (which makes error handling cleaner)
- Strong, dynamic data types and data type checking. (The mixing of incompatible data types—for example, trying to add a string and a number—will cause an exception to be raised.)
- Ability to group chunks of code into separate modules and packages
Because Python is an interpreted language, it is processed at runtime by a Python interpreter. From a coder perspective, applications written in Python do not have to be compiled before they can be executed. However, it’s important to note that Python programs are automatically compiled into bytecode before execution, and in most cases, this bytecode is saved to disk so that compilation only needs to happen again if the program’s source code is altered. The Python interpreter itself can be run in interactive mode, making it easy to test short code snippets, build prototypes, and perform other types of ad hoc programming. In addition, users can add their own low level-modules to the Python interpreter, if desired.
So, why is Python so popular? For one thing, it’s open source. This means that anyone can download it for free (from www.python.org) and use it to develop applications. This also means that the source code for the Python interpreter can be accessed and modified as desired. Furthermore, this can be done on a wide variety of platforms: Python can be used on Microsoft Windows, macOS, and most Linux distributions. As a result, applications written on one platform can easily be executed on another.
Another thing that makes the language appealing is that Python code is easy to read, which makes it easy to learn and maintain. Python has a relatively simple structure, and its syntax is clearly defined; it uses English keywords where other languages rely on punctuation, so there are no curly braces to balance or semicolons to forget. (Some programming languages require lines to be terminated with semicolons.) Instead, indentation is used to mark where code blocks begin and end. Python also uses libraries to provide functionality, which helps keep the core language simple and lightweight. Developers only need to add a basic set of libraries to their code to get the functionality they desire.
Finally, Python is flexible. It can be used with functional, object-oriented, and imperative coding styles, making it useful to different types of programmers. And, it can be used to build a wide variety of applications: it can be used solely as a scripting language, it can be embedded, or it can be compiled and integrated with C, C++, COM, ActiveX, CORBA, and/or Java. Coders trying to choose the best programming tool for the job find that Python is flexible enough to be considered in many situations.
Installing the Python Interpreter
To program in Python, you need the Python interpreter. And, if you are using Linux, there’s a good chance the interpreter is already installed. However, if you are using a different operating system, you may have to install it yourself.
To determine whether the Python interpreter is already installed on a Linux workstation, open a terminal window and type the following command:
If you see something like Python 2.7.5, the Python interpreter is installed on your system, and Python 2.7 is the default version used. If that is the case, you should also check to see if Python 3.x is installed. You can do this by executing the following command instead:
If you see something like Python 3.4 (or earlier), an older version of the 3.x interpreter is installed and you should probably upgrade to the latest version.
If the Python interpreter cannot be found on your system, you can install it by going to https://www.python.org/downloads/ and following the directions provided for the platform you are using. (If you download and install the ready-made Python interpreter for your platform, it’s a good idea to download the source code as well. This will allow you to browse the standard library and take advantage of the collection of demos and tools that come with the code. There’s a lot you can learn from the source!)
IBM Db2 Support for Python
Several resources are available to help developers build Python applications that interact with IBM Db2 servers and databases:
- The ibm_db driver/library: This Python driver uses the IBM Data Server Driver for ODBC/CLI driver to connect to and interact with IBM Db2 and Informix servers and databases. APIs in this library can be used to perform advanced operations that cannot be done with the other Python drivers available.
- The ibm_db_dbi driver/library: This Python driver provides functionality that conforms to the PEP 249 — Python Database API Specification v2. 0. Consequently, it does not offer some of the more advanced features that are available with the ibm_db driver.
However, if you have an application that uses this driver, you can easily switch to the ibm_db driver since both the ibm_db and the ibm_db_dbi drivers are packaged together. (You can learn more
about the PEP 249 specification at https://www.python.org/dev/peps/pep-0249/.)
- The ibm_db_sa adapter: This adapter supports SQLAlchemy, which is a popular open source Python SQL toolkit and object-to-relational mapper (ORM). (Only SQLAlchemy 0.7.3 and later are )
- The ibm_db_django adapter: This adapter provides access to IBM Db2 and Informix servers and databases from Django. Django is a popular Web framework that can be used to build high-performing, elegant Web applications quickly.
Figure 4.1 illustrates how APIs in each of these resources can be used to interact with IBM Db2 and Informix servers and databases. In Chapter 5, “Building a Python-Db2 Development Environment,” we’ll see how to install the ibm_db and ibm_db_dbi drivers/libraries; in Chapter 6, “Building Db2 Applications with Python,” we’ll see how they are used.
Figure1: IBM Db2 support for Python