This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/packages/python/examples/mysql.pl
Vitor Santos Costa b98b09e7de improve utf-8
2012-12-07 08:10:21 +00:00

107 lines
2.6 KiB
Prolog

:- 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 ) DEFAULT charset=utf8',
:= $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).