Bearbeiten Sie verschiedene Datenbanken mit Python

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

Umgebung

Python 2.7 oder 3.3 MySQL 5.6.15

Datenbankeinstellungen

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 ;

Python-Code

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)

Benutzerfreundlichkeit

・ 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

Umgebung

Python2.7 or 3.3 SQLSERVER EXPRESS 2012

Datenbankeinstellungen

SQL SERVER-Verbindungen zulassen. 無題.png

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

Python-Code

Betreiben Sie SQLSERVER direkt

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()

Über ODBC

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])
 

Benutzerfreundlichkeit

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

Umgebung

Python 2.7 oder 3.3 Oracle11

  1. Installieren Sie den Oracle-Client. Erstellen Sie zu diesem Zeitpunkt eine Umgebung für Entwickler.
  2. Laden Sie Folgendes herunter und installieren Sie es unter easy_install. cx_Oracle http://cx-oracle.sourceforge.net/

Python-Code

# -*- 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)

Benutzerfreundlichkeit

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

Umgebung

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/

Datenbankeinstellungen

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;

Python-Code

# -*- 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)

Benutzerfreundlichkeit

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

Umgebung

keine spezielle Anweisung. Wenn Sie über Python 2.5 oder höher verfügen, sollten Sie SQLITE3 standardmäßig betreiben können.

Python-Code

# -*- 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()

Benutzerfreundlichkeit

Im Gegensatz zu herkömmlichen DBs muss kein Server erstellt werden. Benutzerdefinierte Funktionen können clientseitig eingestellt werden.

Recommended Posts

Bearbeiten Sie verschiedene Datenbanken mit Python
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Bearbeiten von DynamoDB-Daten mit Lambda (Node & Python)
Python beginnt mit ()
# 3 [python3] Verschiedene Operatoren
mit Syntax (Python)
1. Mit Python 1-3 gelernte Statistiken. Berechnung verschiedener Statistiken (Statistiken)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
[Verschiedene Bildanalysen mit Plotly] Dynamische Visualisierung mit Plotly [Python, Bild]
Persönliche Tipps, wenn Sie verschiedene Dinge mit Python 3 tun
1. Mit Python 1-2 gelernte Statistiken. Berechnung verschiedener Statistiken (Numpy)
Verwenden Sie verschiedene Rabbimq-Funktionen mit Python Pika
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Tweets mit Python posten
Verwenden Sie Mecab mit Python 3
[Python] Mit CGIHTTPServer umleiten
Verschiedene Python-Visualisierungstools
Kinesis mit Python betreiben
Erste Schritte mit Python
Verwenden Sie DynamoDB mit Python
Zundko Getter mit Python
Behandle Excel mit Python