diff --git a/packages/python/examples/mysql.pl b/packages/python/examples/mysql.pl new file mode 100644 index 000000000..7c5dbde01 --- /dev/null +++ b/packages/python/examples/mysql.pl @@ -0,0 +1,106 @@ + +:- use_module(library(python)). + +:- use_module(library(lists)). + +:- python_import('MySQLdb'). + +:- initialization(main). + +main :- + python_import(pyx), + ex(X), + flush_output, + fail. +main. + +ex(open) :- + connect, +% execute SQL query using execute() method. + := $cursor:execute('SELECT VERSION()'), +% Fetch a single row using fetchone() method. + Data := cursor:fetchone(_), + Data = t(Version), + format( "Database version : ~a~n ", [ Version ]), + close. + +ex(create) :- + connect, +% Drop table if it already exist using execute() method. + := $cursor:execute('DROP TABLE IF EXISTS EMPLOYEE'), + % Create table as per requirement + sql := 'CREATE TABLE EMPLOYEE ( + FIRST_NAME CHAR(20) NOT NULL, + LAST_NAME CHAR(20), + AGE INT, + SEX CHAR(1), + INCOME FLOAT )', + := $cursor:execute($sql), + close. + +ex(insert) :- + connect, +% Prepare SQL query to INSERT a record into the database. + catch(add, _, rollback), + close. + +add :- + customer(First, Last, Age, Sex, Income), + format(atom(Sql), 'INSERT INTO EMPLOYEE(FIRST_NAME, + LAST_NAME, AGE, SEX, INCOME) + VALUES (\'~a\', \'~a\', ~d, \'~a\', ~g)', + [ First, Last, Age, Sex, Income ]), + % Execute the SQL command + := $cursor:execute(Sql), + fail. +add :- + % Commit your changes in the database + := $db:commit(_). + +rollback :- + := db:rollback(_). + +connect :- + db := connect('localhost','testuser','test123','TESTDB' ), + := $db:set_character_set('utf8'), +% prepare a cursor object using cursor() method + cursor := db:cursor(_), + := $cursor:execute('SET NAMES utf8;'), + := $cursor:execute('SET CHARACTER SET utf8;'), + := $cursor:execute('SET character_set_connection=utf8;'). + +close :- +% disconnect from server + := db:close(_). + +% Open database connection +ex(read) :- + connect, +% Prepare SQL query to SELECT a record from the database. + sql := 'SELECT * FROM EMPLOYEE \ + WHERE INCOME > 1000', + catch(try, _, except), + close. + +try:- + % Execute the SQL command + := $cursor:execute($sql), + % Fetch all the rows in a list of lists. + Results := $cursor:fetchall(_), + Results =.. [_|LResults], + member(t(Fname, Lname, Age, Sex, Income), LResults), + % Now print fetched result + format("fname=~a, lname=~a, age=~d, sex=~a, income=~g~n", + [Fname, Lname, Age, Sex, Income ]), + fail. +try. + +except:- + format('Error: unable to fecth data', []). + +% disconnect from server + +customer('João', 'Matos', 40, 'M', 2000). +customer('Maria', 'Söderling', 20, 'F', 3000). +%customer('毛', '泽东', 44, 'M', 500). +%customer('রবীন্দ্রনাথ', 'ঠাকুর', 30, 'M', 8000).