Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum...

87
Introduction to Python for IBM i Mike Pavlak – IT Strategist [email protected]

Transcript of Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum...

Page 1: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Introduction to Python for IBM i

Mike Pavlak – IT Strategist

[email protected]

Page 2: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

2

Agenda

■ A little about Python

■ Why use Python

■ How to install/determine if installed

▶IDE

■ Syntax 101

▶Variables

▶Strings

▶Functions

■ Database

■ Toolkit

Page 3: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

3

Acknowledgements

■ Kevin Adler

■ Tony Cairns

■ Jesse Gorzinski

■ Google

■ Memegenerator

■ Corn chips and salsa

■ Parrots

■ And, of course, spam

Page 4: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

A little about Python

Page 5: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

5

What is it, really?

■ General purpose language

■ Easy to get started

■ Simple syntax

■ Great for integrations (glue between systems)

■ Access to C and other APIs

■ Infrastructure first, but applications, too

Page 6: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

6

Historically…

■ Python was conceptualized by Guido Van Rossum in the late 1980’s

■ Rossum published the first version of Python code (0.9.0) in February of 1991 at the CWI(Centrum Wiskunde & Informatica) in the Netherlands, Amsterdam

■ Python is derived from the ABC programming language, which is a general purpose language that was also developed at CWI.

■ Rossum chose the name “Python” since he was a fan of Monty Python’s Flying Circus.

■ Python is now maintained by a core development team at the institute, although Rossum still holds a vital role in directing its progress and as leading “commitor”.

Page 7: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Why Python?

Page 8: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

11

/ Data survey 40,000 developers, worldwide

Page 9: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Got Python?

Page 10: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

13

Details at Developerworks

■ https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/Open%20Source%20Technologies

The sun is setting on

OPS!

Page 11: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

14

Need licensed program

■ 5733OPS Base and option 2 or 4

Page 12: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

15

Times change…

That was then…

…this is now

Page 13: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

16

Leverage RPM’s

■ Use ACS to do the heavy lifting! But fire up SSH first.

Page 14: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

17

Insert RPM stuff here…

■ Use ACS to do the heavy lifting!

Page 15: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

18

Select system and credentials

Page 16: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

19

Page 17: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

20

Page 18: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

21

Now install Python3

Page 19: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

22

Info command

Page 20: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

23

Confirm “Is this ok [y/n]”

Page 21: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

25

Watch the installation until complete

Page 22: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

26

Looking back at ACS in the installed tab…

Page 23: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

27

Python in action

■ Command line via green screen

Page 24: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

28

Hello World

Page 25: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

29

Most prefer SSH

■ Command line via SSH terminal

▶Recommended strongly by Jesse!

Page 26: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

30

Shell available in ACS (shortcut to )

■ Encrypted

■ BASH, etc.

■ Linux alignment

Page 27: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

31

Hello World, again…

Page 28: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

IDE

Page 29: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

33

Zend Studio

■ No, you don’t need to buy Zend Studio

■ Use Orion, etc.

■ But if you have Studio or RDi…

▶Consider something from Eclipse.org

▶I grabbed PyDev

Page 30: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

34

Eclipse

Page 31: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

35

Download PyDev from Eclipse

Page 32: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

36

Capture URL

■ Help➔

▶Install New Software

▶Follow prompts

Page 33: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

37

Editor for Eclipse

■ Select what you like

▶Click next

Page 34: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

38

Confirm versions

■ Click next again

▶Then accept EULA

Page 35: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

39

Watch the pretty status bar

Page 36: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

40

Python in Eclipse (i.e. Zend Studio)

■ I bet RDi works, too!

Page 37: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

41

Alternatives to IBM i when learning

■ What’s that? The boss won’t let you install Python on the IBM i?

▶Consider repl.it

Page 38: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

42

Desktop education at it’s finest

■ How about your PC?

■ Head to Python.org site:

▶ Download

▶ Install

▶ Viola!

Page 39: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

43

Python Script in IFS

■ Create a file like Ex01hello.py

■ Open the file

■ Key up some code and click save

■ Rinse, repeat…

Page 40: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Python Syntax Fundamentals

Page 41: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

46

How it is written

■ Indentation means EVERYTHING

▶Don’t use tab

▶4 spaces – No more, no less

▶Mismatched indents can cause failures. Good luck finding…

■ No scope terminators like other languages

■ Colon introduces start block, then indent

■ Much more readable than other languages

■ Get a good editor!!!

Page 42: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

47

Indentation

Page 43: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

48

Operators – Similar to other C derivatives

■ Comparison

▶ Assignment =

▶ Comparison ==

▶ Inequality !=

▶ Less than <

▶ Greater than >

▶ Less than or equal to <=

▶ Greater than or equal to >=

■ Mathematical

▶ Addition +

▶ Multiplication *

▶ Division /

▶ Floor division //

▶ Modulus %

▶ Exponentiation **

■ Booleans

▶ And

▶ Or

▶ Not

Page 44: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

SyntaxVariables

Page 45: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

50

Data types – yeah…about that…

■ Int

▶Integer of unlimited size

■ Float

▶System defined precision

■ Complex

▶Complex with real and imaginary parts

■ Strings

▶Sequences of character data

■ Bool

▶TRUE & FALSE

Page 46: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

51

Variables on the fly

■ Case sensitive

■ camelCase

■ Who are you? type()

Page 47: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

52

Variables in a file

Page 48: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

53

Data type?

Page 49: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

54

Every variable is implemented as a class

Page 50: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

55

And now for something completely different

Page 51: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

56

It’s OK…

■ Monty Python references are not only acceptable…

▶They are encouraged!

■ Documentation is littered with references

■ Examples are well covered

Page 52: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

57

Back to variables

■ Numbers – 3 Data types

▶Integer 1,2,42

▶Float 3.14159

▶Complex: <real> + <imaginary> (not used much…)

Page 53: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

58

Strings

■ Immutable objects, cannot change value

■ Can reassign. (dynamic typing)

■ Single or Double quotes, OK (even triple…)

■ Index starts at 0 (of course…)

Page 54: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

59

String formatting

■ Interpolation, of sorts

Page 55: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Set Processing

Page 56: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

61

Lists

■ Ordered group, similar to array

■ Different data types, ok

■ Multi-dimensional (sub lists)

■ Mutable (changeable)

Page 57: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

62

Tuples

■ Similar to lists

■ Immutable (don’t change once created)

■ Use parenthesis instead of brackets

Page 58: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

63

Dictionary

■ Again, like lists but more like hash or PHP Assoc. Array

■ Mutable

■ Key value pairs

Page 59: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Control Structures

Page 60: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

65

ifs

Page 61: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

66

for loop

Page 62: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

67

while loop

Page 63: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Functions

Page 64: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

69

Built in functions

■ About 68

▶Math

▶Type

▶Iterables

▶Composite

▶Classes

▶Variables/Reference Scope

▶Misc…

Page 65: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

70

Built in’s are straight forward

#rounding...valueIn = 98.5valueOut = round(valueIn)print("\n", valueIn, " becomes ", valueOut, " when rounded!\n")

#set processingMySet1 = [23, 18, 14, 16, 21]minset = min(MySet1)print("\nIn the set ", MySet1, " the minimum value is ", minset)print(" while the maximum value is ", max(MySet1))

#How about that object ID?print("\n the ID for the set above is ", id(MySet1))print("\n the ID for valueIn above is ", id(valueIn))print("\n the ID for min above is ", id(minset))

Page 66: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

71

User Defined Functions

Page 67: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

72

Functions with defaults

Page 68: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

73

Functions with Keyword arguments

Page 69: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Command Line

Page 70: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

75

Input from command line

■ “Talk” to the script…

Page 71: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

Database

Page 72: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

77

Locate the package or “wheel”

Page 73: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

78

Install commands

Page 74: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

79

Find the connector

■ YMMV

■ With wheels

Page 75: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

80

Run the pip install

■ pip == Python installer program

Page 76: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

81

What version of the DB2 Extension?

Page 77: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

82

Steps for simple database Access

■ Import the class

■ Connect (with or without options

■ Open the cursor

■ Set the SQL

■ Read

Page 78: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

83

Simple database access

Page 79: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

84

Table info

Page 80: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

IBM i Toolkit

Page 81: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

86

A few ways to access toolkit

■ Transition from Python2 to Python3 and RPM

▶Broke a few things

▶Under construction

▶This will work

Page 82: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

87

Toolkit Version

■ IBM is maintaining version numbers

#import itoolkit

#Version?print("\nThe iToolKit version is: " + itoolkit.__version__ + "\n")

Page 83: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

88

CL Command

import itoolkit as tktimport itoolkit.db2.idb2call as Db2tkt

itool = tkt.iToolKit()print("\nThe iToolKit version is: " + tkt.__version__ + "\n")itransport = Db2tkt.iDB2Call('PYUSER1', 'pyuser1')itool.add(tkt.iCmd5250('dsplibl', 'dsplibl'))itool.call(itransport)

# outputcommandOutput = itool.dict_out('dsplibl')if 'error' in commandOutput:

print (commandOutput['error'])exit()

else:print (commandOutput['dsplibl'])

Page 84: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

89

Summary – Why Python

■ Lot’s of libraries

■ Make it easy to do stuff

■ OPC / OPO

■ Education

Page 85: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)

90

End the session

Page 86: Introduction to Python for IBM i · 2018-11-26 · ■Python was conceptualized by Guido Van Rossum in the late 1980’s ■Rossum published the first version of Python code (0.9.0)