Beschreibt die Bedienung der Hauptdatenbank in Python. Python wird sowohl in 2.x als auch in 3.x in einer Windows-Umgebung ausgeführt.
Entpacken Sie für Testdaten T01Prefecture.zip auf der folgenden Seite und verwenden Sie die Tabelle und die Daten.
__PHP Programming Anfänger Einführungskurs __ http://php5.seesaa.net/article/61269550.html
MySQL
Python 2.7 oder 3.3 MySQL 5.6.15
Tabelle
CREATE TABLE `t01prefecture` (
`PREF_CD` int(3) NOT NULL DEFAULT '0',
`PREF_NAME` varchar(10) DEFAULT NULL,
PRIMARY KEY (`PREF_CD`)
) ENGINE=InnoDB D
__ Gespeichert __, das einen einzelnen Satz von Datensätzen zurückgibt
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 ;
__ Gespeichert __, das mehrere Datensatzgruppen zurückgibt
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 ;
__Funktionsbeispiel __
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 ;
Verwenden Sie mysql-connector-python http://dev.mysql.com/downloads/connector/python/
# -*- coding: cp932 -*-
#MySQL-Operationsbeispiel
#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()
#Testdaten organisieren
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= %s""" , (pref_cd,))
cnn.commit()
print("Einfache SELECT-Anweisung==========================")
from_id = 45
to_id = 999
#Folgendes sollte mit dem Zeichencode der Umgebung übereinstimmen!
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("Verpflichtungsprüfung==========================")
pref_cd = 100
pref_name = "Mote Mote Königreich"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = "Land des Ehrgeizes"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name,))
cnn.commit()
print("Rollback-Test==========================")
pref_cd = 102
pref_name = "zurückrollen"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name,))
cnn.rollback()
print("Prüfung gespeicherter Prozeduren==========================")
cur.callproc("test_sp", (from_id, to_id))
for rs in cur.stored_results():
print("Rekordsatz...")
rows = rs.fetchall()
for row in rows:
print ("%d %s" % (row[0], row[1]))
print("Prüfung gespeicherter Prozeduren(Mehrere)==================")
cur.callproc("test_sp2", (1, 100))
for rs in cur.stored_results():
print("Rekordsatz...")
rows = rs.fetchall()
for row in rows:
print ("%d %s" % (row[0], row[1]))
print("Funktionstest==========================")
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)
・ Das gespeicherte MYSQL ähnelt SQLSERVER.
-MySQL-Python hat eine Bibliothek, funktioniert aber nicht mit 3.x-Serien. Die Nutzung ist fast gleich. http://sourceforge.net/projects/mysql-python/
SQLSERVER
Python2.7 or 3.3 SQLSERVER EXPRESS 2012
SQL SERVER-Verbindungen zulassen.
Tabelle
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]
__ Gespeicherte Rückgabe eines einzelnen Datensatzes __
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
__ Gespeichert, der mehrere Datensatzgruppen zurückgibt __
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/
Instabiler Betrieb Es funktioniert vorerst mit Python2.7 (32bit). Sie können es nicht einmal mit Python3.3 (64 Bit) installieren.
# -*- coding: cp932 -*-
#Operationsbeispiel von mssql
#Stoppen Sie pymssql, weil es VARCHAR nicht gut codiert.
#easy_install pymssql
import pymssql
cnn = pymssql.connect(host="127.0.0.1\SQLEXPRESS", user="sa", password="xxxx", database="Sample001")
cur = cnn.cursor()
#Testdaten organisieren
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= %d"""
% (pref_cd,))
cnn.commit()
print("Einfache SELECT-Anweisung==========================")
print("Stellen Sie sicher, dass die VARCHAR-Codierung falsch ist")
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])) #Fehler abrufen
#Die Zeichencode-Analyse beim Umgang mit VARCHAR ist ungültig
#Ich versuche, den Zeichencode von CP932 als UNICODE zu behandeln.
print("In NVARCHAR konvertieren, da es keine VARCHAR-Felder verarbeiten kann")
#Da VARCHAR-Felder nicht verarbeitet werden können, konvertieren Sie in NVARCHAR und kehren Sie zurück
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("Verpflichtungsprüfung==========================")
pref_cd = 100
pref_name = "Mote Mote Land"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (%d, %s)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = "Land des Ehrgeizes"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (%d, %s)""" , (pref_cd, pref_name,))
cnn.commit()
print("Rollback-Test==========================")
pref_cd = 102
pref_name = "rollen"
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("Prüfung gespeicherter Prozeduren==========================")
cur.execute("""exec test_sp %d, %d """ , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
#Falsche Codierung
#print("%d %s" % (row[0], row[1]))
print(row)
print("Gespeicherte Prozedurprüfungen Mehrere==========================")
cur.execute("""exec test_sp2 %d, %d """ , (1, 10, ))
for row in rows:
while True:
print ("Rekordsatz...")
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()
Verwenden von __pyodbc: __ https://code.google.com/p/pyodbc/
# -*- coding: cp932 -*-
#Operationsbeispiel von 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()
#Testdaten organisieren
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= ?""", pref_cd)
cnn.commit()
print("Einfache SELECT-Anweisung==========================")
from_id = 45
to_id = 999
#Folgendes sollte mit dem Zeichencode der Umgebung übereinstimmen!
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("Verpflichtungsprüfung==========================")
pref_cd = 100
pref_name = "Mote Mote Land"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (?, ?)""" , pref_cd, pref_name)
pref_cd = 101
pref_name = "Land des Ehrgeizes"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , pref_cd, pref_name)
cnn.commit()
print("Rollback-Test==========================")
pref_cd = 102
pref_name = "rollen"
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("Prüfung gespeicherter Prozeduren==========================")
cur.execute("""exec test_sp ?, ? """ , from_id, to_id)
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Gespeicherte Prozedurprüfungen Mehrere====================")
cur.execute("""exec test_sp2 ?, ? """ , 1, 10)
while True:
print ("Rekordsatz...")
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])
Beispiel für die Verwendung von __pypyodbc: __ https://code.google.com/p/pypyodbc/
# -*- coding: cp932 -*-
#Operationsbeispiel von 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()
#Testdaten organisieren
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= ?"""
, (pref_cd,))
cnn.commit()
print("Einfache SELECT-Anweisung==========================")
from_id = 45
to_id = 999
#Folgendes sollte mit dem Zeichencode der Umgebung übereinstimmen!
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("Verpflichtungsprüfung==========================")
pref_cd = 100
pref_name = "Mote Mote Land"
cur.execute("""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = "Land des Ehrgeizes"
cur.execute("""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name,))
cnn.commit()
print("Rollback-Test==========================")
pref_cd = 102
pref_name = "rollen"
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("Prüfung gespeicherter Prozeduren==========================")
cur.execute("""exec test_sp ?, ? """ , (from_id, to_id, ))
rows = cur.fetchall()
for row in rows:
print("%d %s" % (row[0], row[1]))
print("Gespeicherte Prozedurprüfungen Mehrere==========================")
cur.execute("""exec test_sp2 ?, ? """ , (1, 10, ))
while True:
print ("Rekordsatz...")
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 kann verwendet werden, ohne ODBC zu durchlaufen, aber der Vorgang ist äußerst instabil. Das Verhalten von VARCHAR ist verdächtig und kann nur verwendet werden, wenn es in NVARCHAR umgewandelt wurde. Sie können es auch nicht einmal mit 64-Bit-Python 3.3 installieren.
Alle Bibliotheken über ODBC funktionierten. Ich habe es nicht bestätigt, außer für Windows, aber es wird gesagt, dass es es unterstützt.
ORACLE
Python 2.7 oder 3.3 Oracle11
# -*- coding: cp932 -*-
# cx_ORACLE-Operation in Python mit Oracle
#1.Installieren Sie den Oracle-Client.
#Erstellen Sie zu diesem Zeitpunkt eine Umgebung für Entwickler.
#(Vielleicht brauchen Sie OCI?)
#
#2.Herunterladen und installieren von unten oder einfach_Installieren.
# 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 ("Löschen Sie 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 ("Addiere 100")
cur.execute("""INSERT INTO T01PREFECTURE
VALUES (:arg1, :arg2)""",
arg1=100,
arg2="ich")
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 hinzugefügt")
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 ("zurückrollen")
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)
Es scheint, dass Sie über OCI arbeiten, also müssen Sie den ORACLE-Client installieren. Ich habe die Angewohnheit, mich zu verbinden. Außerdem wird der Zeichencode durch die Umgebungsvariable angegeben.
PL / SQL in ORACLE gibt im Gegensatz zu SQLSERVER keine Ergebnismenge zurück. (Ich kann die Sequenz zurückgeben, aber ich habe hier nicht experimentiert, weil es problematisch ist.)
Änderungen werden ohne explizites COMMIT verworfen.
Postgresql
Python 2.x / 3.x PostgresSQL 9.3
Verwenden Sie psycopg2 als Bibliothek Laden Sie unter Windows die folgende Seite herunter und führen Sie Exe aus http://www.stickpeople.com/projects/python/win-psycopg/
Tabellendefinition
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;
__PostgresSQL benutzerdefinierte Funktion __
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 -*-
#Laden Sie unter Windows Folgendes herunter
# http://www.stickpeople.com/projects/python/win-psycopg/
# Python3.Für x Unicode(row[1],'utf-8')Ist unnötig.
#
import psycopg2
try:
cnn = psycopg2.connect("dbname=Sample001 host=localhost user=postgres password=xxxxx")
cur = cnn.cursor()
#Testdaten organisieren
pref_cd = 100
cur.execute("""DELETE FROM t01prefecture WHERE PREF_CD >= %s"""
, (pref_cd,))
cnn.commit()
print("Einfache SELECT-Anweisung==========================")
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("Verpflichtungsprüfung==========================")
pref_cd = 100
pref_name = u"Mote Mote Land"
cur.execute(u"""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (%s, %s)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = u"Land des Ehrgeizes"
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("Rollback-Test==========================")
pref_cd = 102
pref_name = u"rollen"
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("Benutzerdefinierte==========================")
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 gibt den in UTF8 festgelegten Datensatz zurück, sodass Sie ihn einmal in UNICODE konvertieren müssen. Kein Python3-System erforderlich.
Gespeicherte Postgres-Prozeduren ähneln ORACLE PL / SQL. Sie können jedoch eine Funktion angeben, die den Tabellentyp zurückgibt.
SQLite
keine spezielle Anweisung. Wenn Sie über Python 2.5 oder höher verfügen, sollten Sie SQLITE3 standardmäßig betreiben können.
# -*- coding: cp932 -*-
#sqlite3 ist Python2.Sollte ab 5 Standard sein.
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")
#Verpflichtungsprüfung
pref_cd = 100
pref_name = u"Mote Mote Land"
conn.execute(u"""INSERT INTO t01prefecture(PREF_CD, PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name))
pref_cd = 101
pref_name = u"Land des Ehrgeizes"
conn.execute(u"""INSERT INTO t01prefecture(PREF_CD,PREF_NAME)
VALUES (?, ?)""" , (pref_cd, pref_name,))
conn.commit()
#Rollback-Test
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]))
#Benutzerdefinierte
#Verketten Sie nur Zeichen
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()
Im Gegensatz zu herkömmlichen DBs muss kein Server erstellt werden. Benutzerdefinierte Funktionen können clientseitig eingestellt werden.
Recommended Posts