Décrit comment utiliser la base de données principale en Python. Python s'exécute à la fois dans 2.x et 3.x dans un environnement Windows.
Pour les données de test, décompressez T01Prefecture.zip sur la page suivante et utilisez le tableau et les données.
__Cours d'introduction à la programmation PHP pour débutants __ http://php5.seesaa.net/article/61269550.html
MySQL
Python 2.7 ou 3.3 MySQL 5.6.15
table
CREATE TABLE `t01prefecture` (
`PREF_CD` int(3) NOT NULL DEFAULT '0',
`PREF_NAME` varchar(10) DEFAULT NULL,
PRIMARY KEY (`PREF_CD`)
) ENGINE=InnoDB D
__ Stocké __ qui renvoie un seul jeu d'enregistrements
DELIMITER $$
CREATE DEFINER=`username`@`%` PROCEDURE `test_sp`(IN fromNo INT,
IN toNo INT)
BEGIN
select * from t01prefecture WHERE PREF_CD BETWEEN fromNo AND toNo ;
END$$
DELIMITER ;
__ Stocké __ qui renvoie plusieurs jeux d'enregistrements
DELIMITER $$
CREATE DEFINER=`username`@`%` PROCEDURE `test_sp2`(IN cd1 INT,IN cd2 INT)
BEGIN
select * from t01prefecture WHERE PREF_CD = cd1;
select * from t01prefecture WHERE PREF_CD = cd2;
END$$
DELIMITER ;
__Exemple de fonction __
DELIMITER $$
CREATE DEFINER=`username`@`%` FUNCTION `test_fn`(cd INT) RETURNS varchar(10) CHARSET utf8
BEGIN
DECLARE ret VARCHAR(10);
SELECT PREF_NAME INTO ret FROM t01prefecture WHERE PREF_CD = cd;
RETURN ret;
END$$
DELIMITER ;
Utilisez mysql-connector-python http://dev.mysql.com/downloads/connector/python/
# -*- coding: cp932 -*-
#exemple d'opération mysql
#easy_install mysql-connector-python
import mysql.connector
try:
cnn = mysql.connector.connect(host='localhost',
port=3306,
db='Sample001',
user='root',
passwd='root',
charset="cp932")
cur = cnn.cursor()
#Organiser les données de test
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= %s""" , (pref_cd,))
cnn.commit()
print("Instruction SELECT simple==========================")
from_id = 45
to_id = 999
#Ce qui suit doit correspondre au code de caractère de l'environnement!
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN %s AND %s""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Examen d'engagement==========================")
pref_cd = 100
pref_name = "Royaume de Mote Mote"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = "Pays d'ambition"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name,))
cnn.commit()
print("Test de restauration==========================")
pref_cd = 102
pref_name = "retour en arriere"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name,))
cnn.rollback()
print("Examen des procédures stockées==========================")
cur.callproc("test_sp", (from_id, to_id))
for rs in cur.stored_results():
print("Jeu d'enregistrements...")
rows = rs.fetchall()
for row in rows:
print ("%d %s" % (row[0], row[1]))
print("Examen des procédures stockées(Plusieurs)==================")
cur.callproc("test_sp2", (1, 100))
for rs in cur.stored_results():
print("Jeu d'enregistrements...")
rows = rs.fetchall()
for row in rows:
print ("%d %s" % (row[0], row[1]))
print("Test de fonctionnalité==========================")
pref_cd = 100
cur.execute("""SELECT test_fn(%s)""" , (pref_cd,))
rows = cur.fetchall()
for row in rows:
print("code:%d name:%s" % (pref_cd, row[0]))
cur.close()
cnn.close()
except (mysql.connector.errors.ProgrammingError) as e:
print (e)
・ MYSQL stocké est similaire à SQLSERVER.
-Après avoir exécuté stocké, le jeu d'enregistrements est dans cur.stored_results. ..
-MySQL-python a une bibliothèque, mais cela ne fonctionne pas sur les séries 3.x. L'utilisation est presque la même. http://sourceforge.net/projects/mysql-python/
SQLSERVER
Python2.7 or 3.3 SQLSERVER EXPRESS 2012
Autorisez les connexions SQL SERVER.
table
CREATE TABLE [dbo].[T01Prefecture](
[PREF_CD] [int] NOT NULL,
[PREF_NAME] [varchar](10) NULL,
PRIMARY KEY CLUSTERED
(
[PREF_CD] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
__ Stocké renvoyant un seul jeu d'enregistrements __
CREATE PROCEDURE [dbo].[test_sp]
@from INT,
@to INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT * FROM T01Prefecture WHERE PREF_CD BETWEEN @from AND @to
END
__ Stocké qui renvoie plusieurs jeux d'enregistrements __
CREATE PROCEDURE [dbo].[test_sp2]
@cd1 INT,
@cd2 INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT * FROM T01Prefecture WHERE PREF_CD = @cd1
SELECT * FROM T01Prefecture WHERE PREF_CD = @cd2
END
pymssql http://pymssql.org/en/latest/
Fonctionnement instable Cela fonctionne pour le moment avec Python2.7 (32 bits). Vous ne pouvez même pas l'installer avec Python3.3 (64 bits).
# -*- coding: cp932 -*-
#exemple d'opération de mssql
#Arrêtez pymssql car il n'encode pas bien VARCHAR.
#easy_install pymssql
import pymssql
cnn = pymssql.connect(host="127.0.0.1\SQLEXPRESS", user="sa", password="xxxx", database="Sample001")
cur = cnn.cursor()
#Organiser les données de test
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= %d"""
% (pref_cd,))
cnn.commit()
print("Instruction SELECT simple==========================")
print("Assurez-vous que le codage VARCHAR est incorrect")
from_id = 45
to_id = 999
cur.execute("""SELECT PREF_CD, PREF_NAME FROM T01Prefecture
WHERE PREF_CD BETWEEN %d AND %d""" , (from_id, to_id))
rows = cur.fetchall()
for row in rows:
print(row)
# print("%d %s" % (row[0], row[1])) #Obtenir une erreur
#L'analyse du code de caractère lors de la gestion de VARCHAR n'est pas valide
#J'essaye de manipuler le code de caractère de CP932 comme UNICODE.
print("Convertir en NVARCHAR car il ne peut pas gérer les champs VARCHAR")
#Étant donné que les champs VARCHAR ne peuvent pas être traités, convertissez en NVARCHAR et retournez
cur.execute("""SELECT PREF_CD,CAST(PREF_NAME AS NVARCHAR) FROM T01Prefecture
WHERE PREF_CD BETWEEN %d AND %d""" , (from_id, to_id))
rows = cur.fetchall()
for row in rows:
print(row)
print("%d %s" % (row[0], row[1]))
print("Examen d'engagement==========================")
pref_cd = 100
pref_name = "Pays de Mote Mote"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (%d, %s)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = "Pays d'ambition"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%d, %s)""" , (pref_cd, pref_name,))
cnn.commit()
print("Test de restauration==========================")
pref_cd = 102
pref_name = "rouleau"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%d, %s)""" , (pref_cd, pref_name,))
cnn.rollback()
cur.execute("""SELECT PREF_CD, CAST(PREF_NAME AS NVARCHAR) FROM t01prefecture
WHERE PREF_CD BETWEEN %d AND %d""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Examen des procédures stockées==========================")
cur.execute("""exec test_sp %d, %d """ , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
#Encodage incorrect
#print("%d %s" % (row[0], row[1]))
print(row)
print("Procédure stockée testant plusieurs==========================")
cur.execute("""exec test_sp2 %d, %d """ , (1, 10, ))
for row in rows:
while True:
print ("Jeu d'enregistrements...")
rows = cur.fetchall()
for row in rows:
#print("%d %s" % (row[0], row[1]))
print(row)
if not cur.nextset():
break
cur.close()
cnn.close()
Utilisation de __pyodbc: __ https://code.google.com/p/pyodbc/
# -*- coding: cp932 -*-
#exemple d'opération de mssql
#easy_install pyodbc
import pyodbc
try:
cnn = pyodbc.connect("DRIVER={SQL Server};SERVER=127.0.0.1\SQLEXPRESS;" +
"UID=sa;PWD=XXXX;DATABASE=Sample001")
cur = cnn.cursor()
#Organiser les données de test
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= ?""", pref_cd)
cnn.commit()
print("Instruction SELECT simple==========================")
from_id = 45
to_id = 999
#Ce qui suit doit correspondre au code de caractère de l'environnement!
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN ? AND ?""" , from_id, to_id)
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Examen d'engagement==========================")
pref_cd = 100
pref_name = "Pays de Mote Mote"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (?, ?)""" , pref_cd, pref_name)
pref_cd = 101
pref_name = "Pays d'ambition"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , pref_cd, pref_name)
cnn.commit()
print("Test de restauration==========================")
pref_cd = 102
pref_name = "rouleau"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , pref_cd, pref_name)
cnn.rollback()
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN ? AND ?""" , from_id, to_id)
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Examen des procédures stockées==========================")
cur.execute("""exec test_sp ?, ? """ , from_id, to_id)
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Procédure stockée testant plusieurs====================")
cur.execute("""exec test_sp2 ?, ? """ , 1, 10)
while True:
print ("Jeu d'enregistrements...")
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
if not cur.nextset():
break
cur.close()
cnn.close()
except (pyodbc.Error) as e:
print (e)
print (e.args[1])
Exemple d'utilisation de __pypyodbc: __ https://code.google.com/p/pypyodbc/
# -*- coding: cp932 -*-
#exemple d'opération de mssql
#easy_install pypyodbc
import pypyodbc
try:
cnn = pypyodbc.connect("DRIVER={SQL Server};SERVER=127.0.0.1\SQLEXPRESS;UID=sa;PWD=xxxxx;DATABASE=Sample001")
cur = cnn.cursor()
#Organiser les données de test
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= ?"""
, (pref_cd,))
cnn.commit()
print("Instruction SELECT simple==========================")
from_id = 45
to_id = 999
#Ce qui suit doit correspondre au code de caractère de l'environnement!
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN ? AND ?""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Examen d'engagement==========================")
pref_cd = 100
pref_name = "Pays de Mote Mote"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = "Pays d'ambition"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name,))
cnn.commit()
print("Test de restauration==========================")
pref_cd = 102
pref_name = "rouleau"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name,))
cnn.rollback()
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN ? AND ?""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Examen des procédures stockées==========================")
cur.execute("""exec test_sp ?, ? """ , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Procédure stockée testant plusieurs==========================")
cur.execute("""exec test_sp2 ?, ? """ , (1, 10, ))
while True:
print ("Jeu d'enregistrements...")
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
if not cur.nextset():
break
cur.close()
cnn.close()
except (pypyodbc.DatabaseError) as e:
print (e.args[1])
pymssql peut être utilisé sans passer par ODBC, mais l'opération est extrêmement instable. Le comportement de VARCHAR est suspect et il ne peut être utilisé que s'il est converti en NVARCHAR. De plus, vous ne pouvez même pas l'installer avec Python 3.3 64 bits.
Toutes les bibliothèques via ODBC ont fonctionné. Je ne l'ai pas confirmé sauf pour Windows, mais on dit qu'il le supporte.
ORACLE
Python 2.7 ou 3.3 Oracle11
# -*- coding: cp932 -*-
# cx_Opération ORACLE en Python à l'aide d'Oracle
#1.Installez le client Oracle.
#À ce stade, créez un environnement pour les développeurs.
#(Peut-être avez-vous besoin d'OCI?)
#
#2.Téléchargez et installez ci-dessous ou facilement_installer.
# cx_Oracle
# http://cx-oracle.sourceforge.net/
import cx_Oracle
import os
os.environ["NLS_LANG"] = "JAPANESE_JAPAN.JA16SJISTILDE"
try:
tns = cx_Oracle.makedsn("localhost", 1521, "Sample")
conn = cx_Oracle.connect("user", "pass", tns)
cur = conn.cursor()
from_cd = 45
to_cd = 200
cur.execute("""SELECT * FROM T01PREFECTURE
WHERE PREF_CD BETWEEN :arg1 AND :arg2""",
arg1=from_cd,
arg2=to_cd)
rows = cur.fetchall()
for r in rows:
print("%d : %s" % (r[0], r[1]))
print ("===================")
print ("Effacer 100")
cur.execute("""DELETE FROM T01PREFECTURE WHERE PREF_CD=:arg1""",
arg1=100)
cur.execute("""SELECT * FROM T01PREFECTURE
WHERE PREF_CD BETWEEN :arg1 AND :arg2""",
arg1=from_cd,
arg2=to_cd)
rows = cur.fetchall()
for r in rows:
print("%d : %s" % (r[0], r[1]))
print ("------------------")
print ("Ajouter 100")
cur.execute("""INSERT INTO T01PREFECTURE
VALUES (:arg1, :arg2)""",
arg1=100,
arg2="je")
conn.commit()
cur.execute("""SELECT * FROM T01PREFECTURE
WHERE PREF_CD BETWEEN :arg1 AND :arg2""",
arg1=from_cd,
arg2=to_cd)
rows = cur.fetchall()
for r in rows:
print("%d : %s" % (r[0], r[1]))
print ("===================")
print ("101 ajoutés")
cur.execute("""INSERT INTO T01PREFECTURE
VALUES (:arg1, :arg2)""",
arg1=101,
arg2="Hokuto")
cur.execute("""SELECT * FROM T01PREFECTURE
WHERE PREF_CD BETWEEN :arg1 AND :arg2""",
arg1=from_cd,
arg2=to_cd)
rows = cur.fetchall()
for r in rows:
print("%d : %s" % (r[0], r[1]))
print ("------------------")
print ("retour en arriere")
conn.rollback()
cur.execute("""SELECT * FROM T01PREFECTURE
WHERE PREF_CD BETWEEN :arg1 AND :arg2""",
arg1=from_cd,
arg2=to_cd)
rows = cur.fetchall()
for r in rows:
print("%d : %s" % (r[0], r[1]))
except (cx_Oracle.DatabaseError) as ex:
error, = ex.args
print (error.message)
Il semble que vous travaillez via OCI, vous devez donc installer le client ORACLE. J'ai l'habitude de me connecter. Spécifiez également le code de caractère avec la variable d'environnement.
PL / SQL dans ORACLE ne renvoie pas de jeu de résultats contrairement à SQLSERVER. (Je peux renvoyer la séquence, mais je n'ai pas expérimenté ici car c'est gênant)
Les modifications sont ignorées sans COMMIT explicite.
Postgresql
Python 2.x / 3.x PostgresSQL 9.3
Utilisez psycopg2 comme bibliothèque Pour Windows, téléchargez à partir de la page suivante et exécutez Exe http://www.stickpeople.com/projects/python/win-psycopg/
__ définition de la table__
CREATE TABLE t01prefecture
(
pref_cd integer NOT NULL,
pref_name character varying(10),
CONSTRAINT t01prefecture_pkey PRIMARY KEY (pref_cd)
)
WITH (
OIDS=FALSE
);
ALTER TABLE t01prefecture
OWNER TO postgres;
__Fonction définie par l'utilisateur PostgresSQL __
CREATE OR REPLACE FUNCTION test_sp(IN from_cd integer, IN to_cd integer)
RETURNS TABLE(code integer, name varchar) AS
$$
DECLARE
BEGIN
RETURN QUERY SELECT PREF_CD,PREF_NAME FROM t01Prefecture
WHERE PREF_CD BETWEEN from_cd AND to_cd;
END;
$$ LANGUAGE plpgsql;
# -*- coding: cp932 -*-
#Pour Windows, téléchargez à partir de ce qui suit
# http://www.stickpeople.com/projects/python/win-psycopg/
# Python3.Pour x, unicode(row[1],'utf-8')Est inutile.
#
import psycopg2
try:
cnn = psycopg2.connect("dbname=Sample001 host=localhost user=postgres password=xxxxx")
cur = cnn.cursor()
#Organiser les données de test
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= %s"""
, (pref_cd,))
cnn.commit()
print("Instruction SELECT simple==========================")
from_id = 45
to_id = 999
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN %s AND %s""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
#print("%d %s" % (row[0], unicode(row[1],'utf-8')))
print("%d %s" % (row[0], row[1]))
print("Examen d'engagement==========================")
pref_cd = 100
pref_name = u"Pays de Mote Mote"
cur.execute(u"""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = u"Pays d'ambition"
cur.execute(u"""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name,))
cnn.commit()
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN %s AND %s""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
#print("%d %s" % (row[0],unicode(row[1],'utf-8')))
print("%d %s" % (row[0],row[1]))
print("Test de restauration==========================")
pref_cd = 102
pref_name = u"rouleau"
cur.execute(u"""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name,))
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN %s AND %s""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
#print("%d %s" % (row[0], unicode(row[1],'utf-8')))
print("%d %s" % (row[0], row[1]))
print("-------------------------")
cnn.rollback()
cur.execute("""SELECT PREF_CD,PREF_NAME FROM t01prefecture
WHERE PREF_CD BETWEEN %s AND %s""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
#print("%d %s" % (row[0], unicode(row[1],'utf-8')))
print("%d %s" % (row[0], row[1]))
print("Défini par l'utilisateur==========================")
cur.execute("""SELECT * FROM test_sp(%s,%s)""" , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
#print("%d %s" % (row[0], unicode(row[1],'utf-8')))
print("%d %s" % (row[0], row[1]))
cur.close()
cnn.close()
except (psycopg2.OperationalError) as e:
print (e)
Python2.X renvoie le jeu d'enregistrements en UTF8, vous devez donc le convertir une fois en UNICODE. Pas besoin de système Python3.
Les procédures stockées Postgres sont similaires à ORACLE PL / SQL. Cependant, vous pouvez spécifier une fonction qui renvoie le type de table.
SQLite
aucune instruction spéciale. Si vous disposez de Python 2.5 ou version ultérieure, vous devriez pouvoir utiliser SQLITE3 en standard.
# -*- coding: cp932 -*-
#sqlite3 est Python2.Devrait être standard à partir de 5.
import sqlite3
conn = sqlite3.connect('test.sqlite3')
sql = '''CREATE TABLE IF NOT EXISTS t01prefecture(
pref_cd INTEGER,
pref_name TEXT);'''
conn.execute(sql)
conn.execute(u"DELETE FROM t01prefecture")
#Examen d'engagement
pref_cd = 100
pref_name = u"Pays de Mote Mote"
conn.execute(u"""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = u"Pays d'ambition"
conn.execute(u"""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name,))
conn.commit()
#Test de restauration
pref_cd = 102
pref_name = u"back"
conn.execute(u"""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name,))
conn.rollback()
rows = conn.execute(u'SELECT * FROM t01prefecture WHERE pref_cd > ?', (0,))
for row in rows:
print(u"%d %s" % (row[0], row[1]))
#Défini par l'utilisateur
#Concaténer uniquement les caractères
class UserDef:
def __init__(self):
self.values = []
def step(self, value):
self.values.append(value)
def finalize(self):
return "/".join(map(str, self.values))
conn.create_aggregate("userdef", 1, UserDef)
rows = conn.execute(u'SELECT userdef(PREF_NAME) FROM t01prefecture')
for row in rows:
print(u"%s" % (row[0]))
conn.close()
Contrairement aux bases de données conventionnelles, il n'est pas nécessaire de créer un serveur. Les fonctions définies par l'utilisateur peuvent être définies côté client.
Recommended Posts