Exemple détaillé pour vous apprendre à vous connecter à SQLServer2000 à l'aide de Python

Y2J
Libérer: 2017-05-03 16:24:37
original
2097 Les gens l'ont consulté

Cet article présente principalement la méthode de connexion de Python à SQLServer2000 et analyse les problèmes courants et les précautions associées rencontrés lors de la mise en œuvre de la connexion à la base de données par Python sous forme d'exemples. Les amis dans le besoin peuvent se référer à

. Cet article L'exemple décrit comment Python se connecte à SQLServer2000. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

pymssql.sourceforge.net/ Présentation d'une bonne adresse pour que PYTHON se connecte à MSSQL !

Une bonne façon d'utiliser Python est de trouver de nombreux modules prêts à l'emploi sur Internet, puis de les télécharger directement et de les utiliser. L’une des raisons de ce développement rapide est la suivante. Maintenant nous allons principalement étudier les fonctions de fonctionnement du module pymssql !

Vous pouvez directement interroger le document d'aide après l'installation pour afficher certains documents d'aide sur les fonctions de ce module.

1. Une méthode pour résoudre le problème des caractères tronqués :

s.decode('gbk', 'ignore')
Copier après la connexion

Par exemple, si vous souhaitez convertir un objet String du code interne gbk en UTF-8, vous pouvez opérer comme suit

s.decode('gbk').encode('utf-8')
Copier après la connexion

Cependant, dans le développement réel, j'ai trouvé que cette méthode provoque souvent des exceptions :

UnicodeDecodeError : le codec 'gbk' peut' t décoder les octets en position 30664-30665 : séquence multi-octets illégale

Cela est dû au fait qu'un caractère illégal est rencontré - en particulier dans certains programmes écrits en C/C++, les espaces pleine chasse ont souvent de nombreuses implémentations différentes. Par exemple, /xa3/xa0, ou /xa4/x57, ces caractères semblent être des espaces pleine chasse, mais ce ne sont pas des espaces pleine chasse « légaux » (les vrais espaces pleine chasse sont /xa1/xa1), donc quand transcodage Une exception s'est produite pendant le processus.

Heureusement, tiny a trouvé une solution parfaite (on m'a reproché de ne pas avoir lu attentivement la documentation, transpirer...)

s.decode('gbk', 'ignore').encode('utf-8')
Copier après la connexion

Parce que le prototype de fonction de decode est decode([ encoding] , [errors='strict']), vous pouvez utiliser le deuxième paramètre pour contrôler la stratégie de gestion des erreurs. Le paramètre par défaut est strict, ce qui signifie qu'une exception sera levée lorsqu'un caractère illégal est rencontré

< ; 🎜> Si défini sur ignore, les caractères illégaux seront ignorés ; Si défini sur replace, les caractères illégaux seront remplacés par ? ;
Si défini sur xmlcharrefreplace, les références de caractères XML seront utilisées.

Cette méthode est vraiment utile. Pour le problème du stockage des caractères illégaux pleine largeur et demi-chasse dans la base de données, vous pouvez le résoudre comme ceci !

L'encodage des caractères est toujours un casse-tête, haha !

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

Ce qui précède fournit les fonctions opérationnelles courantes de Python-DBAPI.

Résumez les méthodes de fonctionnement de l'API pertinentes :

3. Résumez le processus général du programme Python se connectant à la base de données et écrivez-le comme ceci :

Étape 1 : Importer le module associé

où MYSQL :

import MySQLdb
Copier après la connexion
où MSSQL :

import pymssql
Copier après la connexion
Étape 2 : Ouvrir la connexion

où MYSQL :

conn = MySQLdb.connect(self.dbhost,self.dbuser,self.dbpasswd,self.database)
Copier après la connexion
Parmi eux MSSQL :

conn = pymssql.connect(host=self.dbhost,user=self.dbuser,password=self.dbpasswd,database=self.database)
Copier après la connexion
[Cette méthode est définie via son propre prototype de fonction]

Étape 3 : Une fois la connexion terminée, commencez à créer un curseur . Utilisez cet objet pour envoyer une opération de requête à la base de données.

Code :

curs = conn.cursor()
Copier après la connexion
Il est équivalent à l'objet Statement en JAVA. Soumettez les commandes SQL via des instructions


Étape 4 : Commencez à envoyer des commandes SQL au serveur de base de données Vous pouvez le faire comme ceci

curs.execute(SQL)
Copier après la connexion
Par exemple :

.
curs.execute("select * from test")
Copier après la connexion
La commande SQL peut être n'importe quelle instruction SQL, qui peut être une opération INSERT, une opération DELETE ou une opération SELECT

Veuillez noter que commit() est requis après l'exécution.

Par exemple :

cursor.execute("insert into test(id) values(1)")
Copier après la connexion
Si l'opération SELECT est exécutée, la cinquième étape est requise :

La cinquième étape :

curs.execute("select * from test")
rows = curs.fetchall()
Copier après la connexion
Le fetchall() est juste une méthode de notre objet curseur.

Maintenant vous pouvez extraire les informations pertinentes

for i in range(len(rows)):
 print "Row",i,"name",rows[i][0],"value",rows[i][1]
Copier après la connexion
Regardez le code que j'ai écrit :

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()
Copier après la connexion
Je comprends : grâce à cette méthode, j'obtiens une ligne A record est en fait une structure de données de tuple.

Pour en obtenir un, vous pouvez l'interroger en utilisant une méthode similaire à un tableau bidimensionnel.

rows[1][0] : représente la valeur de la première position dans le premier enregistrement.

Ensuite, voyons comment l'extraire de la base de données, puis l'encoder et le décoder

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal