Heim  >  Artikel  >  Backend-Entwicklung  >  Detailliertes Beispiel, das Ihnen beibringt, wie Sie mit Python eine Verbindung zu SQLServer2000 herstellen

Detailliertes Beispiel, das Ihnen beibringt, wie Sie mit Python eine Verbindung zu SQLServer2000 herstellen

Y2J
Y2JOriginal
2017-05-03 16:24:372095Durchsuche

Dieser Artikel stellt hauptsächlich die Methode zum Verbinden von SQLServer2000 mit Python vor und analysiert die häufigen Probleme und damit verbundenen Vorsichtsmaßnahmen, die bei der Implementierung einer Datenbankverbindung in Python auftreten, in Form von Beispielen. Freunde in Not können sich auf diesen Artikel beziehen

Das Beispiel beschreibt, wie Python eine Verbindung zu SQLServer2000 herstellt. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

pymssql.sourceforge.net/ Wir stellen eine gute Adresse für PYTHON vor, um eine Verbindung zu MSSQL herzustellen!

Eine gute Möglichkeit, Python zu nutzen, besteht darin, viele vorgefertigte Module im Internet zu finden und diese dann direkt herunterzuladen und zu verwenden. Dies ist einer der Gründe für die rasante Entwicklung. Jetzt werden wir uns hauptsächlich mit den Betriebsfunktionen des PymsSQL-Moduls befassen!

Sie können das Hilfedokument nach der Installation direkt abfragen, um einige Funktionshilfedokumente dieses Moduls anzuzeigen.

1. Eine Methode zur Lösung des Problems verstümmelter Zeichen:

s.decode('gbk', 'ignore')

Zum Beispiel, wenn Sie ein String-Objekt s aus internem GBK-Code konvertieren möchten UTF-8, Sie können wie folgt vorgehen

s.decode('gbk').encode('utf-8')

In der tatsächlichen Entwicklung habe ich jedoch festgestellt, dass diese Methode häufig Ausnahmen verursacht:

UnicodeDecodeError: 'gbk' codec can' t dekodiert Bytes an Position 30664-30665: illegale Multibyte-Sequenz

Dies liegt daran, dass illegale Zeichen auftreten – insbesondere in einigen in C/C++ geschriebenen Programmen haben Leerzeichen voller Breite oft viele verschiedene Implementierungen. Zum Beispiel , /xa3/xa0 oder /xa4/x57, diese Zeichen scheinen Leerzeichen in voller Breite zu sein, aber sie sind keine „legalen“ Leerzeichen in voller Breite (die tatsächlichen Leerzeichen in voller Breite sind /xa1/xa1), also beim Transkodieren Während des Vorgangs ist eine Ausnahme aufgetreten.

Zum Glück hat Tiny eine perfekte Lösung gefunden (ich wurde dafür kritisiert, dass ich die Dokumentation nicht sorgfältig gelesen habe, Schweiß...)

s.decode('gbk', 'ignore').encode('utf-8')

Denn der Funktionsprototyp von decode ist decode([ Kodierung] , [errors='strict']), können Sie den zweiten Parameter verwenden, um die Fehlerbehandlungsstrategie zu steuern. Der Standardparameter ist strikt, was bedeutet, dass eine Ausnahme ausgelöst wird, wenn ein unzulässiges Zeichen auftritt > Wenn auf „Ignorieren“ gesetzt, werden unzulässige Zeichen ignoriert.

Bei „Ersetzen“ werden unzulässige Zeichen durch ? ersetzt.

Bei der Einstellung „xmlcharrefreplace“ werden XML-Zeichenreferenzen verwendet.

Diese Methode ist wirklich hilfreich. Das Problem, illegale Zeichen voller und halber Breite in der Datenbank zu speichern, können Sie wie folgt lösen!

Zeichenkodierung bereitet immer Kopfschmerzen, haha!

2.www.python.org/dev/peps/pep-0249/

Das Obige bietet allgemeine Betriebsfunktionen von Python-DBAPI.

Fassen Sie die relevanten API-Betriebsmethoden zusammen:

3. Fassen Sie den allgemeinen Programmprozess der Verbindung von Python mit der Datenbank zusammen und schreiben Sie ihn wie folgt:

Schritt 1: Zugehöriges Modul importieren

wo MYSQL:

wo MSSQL:

import MySQLdb

Schritt 2: Öffnen Sie die Verbindung

import pymssql
wo MYSQL:

Unter ihnen MSSQL:

conn = MySQLdb.connect(self.dbhost,self.dbuser,self.dbpasswd,self.database)

[Diese Methode wird durch einen eigenen Funktionsprototyp definiert]

conn = pymssql.connect(host=self.dbhost,user=self.dbuser,password=self.dbpasswd,database=self.database)
Schritt 3: Nachdem die Verbindung hergestellt wurde, beginnen Sie mit der Erstellung eines Cursors. Verwenden Sie dieses Objekt, um eine Anforderungsoperation an die Datenbank zu senden.

Code:

Es entspricht dem Statement-Objekt in JAVA. Senden Sie SQL-Befehle über Anweisungen

curs = conn.cursor()

Schritt 4: Beginnen Sie mit dem Senden von SQL-Befehlen an den Datenbankserver. Sie können es wie folgt tun

Zum Beispiel:

curs.execute(SQL)

Der SQL-Befehl kann eine beliebige SQL-Anweisung sein, die eine INSERT-Operation, eine DELETE-Operation oder eine SELECT-Operation sein kann

curs.execute("select * from test")
Bitte beachten Sie, dass commit() nach der Ausführung erforderlich ist.

Zum Beispiel:

Wenn die SELECT-Operation ausgeführt wird, ist der fünfte Schritt erforderlich:

cursor.execute("insert into test(id) values(1)")
Der fünfte Schritt:

fetchall() ist nur eine Methode unseres Cursorobjekts.

curs.execute("select * from test")
rows = curs.fetchall()
Jetzt können Sie die relevanten Informationen extrahieren

Sehen Sie sich den Code an, den ich geschrieben habe:

for i in range(len(rows)):
 print "Row",i,"name",rows[i][0],"value",rows[i][1]

Ich verstehe: Durch diese Methode erhalte ich eine Zeile A Datensatz ist eigentlich eine Tupel-Datenstruktur.

def test(self):
    conn = self.connect()
    sql="select * from bbs where id<20"
    curs = conn.cursor()  #得到一个游标对象
    curs.execute(sql)    #执行一个SQL语句
    rows=curs.fetchall()  #得到全部的查询结果集
    for i in range(len(rows)): #
      print "Row",i,"name",rows[i][3],"value",rows[i][4]
    conn.close()
Um eines davon zu erhalten, können Sie es mit einer Methode abfragen, die einem zweidimensionalen Array ähnelt.

rows[1][0]: stellt den Wert der ersten Position im ersten Datensatz dar.

Dann schauen wir uns an, wie man es aus der Datenbank extrahiert und es dann kodiert und dekodiert

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel, das Ihnen beibringt, wie Sie mit Python eine Verbindung zu SQLServer2000 herstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn