Maison  >  Article  >  développement back-end  >  Exemple détaillé pour vous apprendre à vous connecter à SQLServer2000 à l'aide de Python

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

Y2J
Y2Joriginal
2017-05-03 16:24:372029parcourir

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

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

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

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
où MSSQL :

import pymssql
Étape 2 : Ouvrir la connexion

où MYSQL :

conn = MySQLdb.connect(self.dbhost,self.dbuser,self.dbpasswd,self.database)
Parmi eux MSSQL :

conn = pymssql.connect(host=self.dbhost,user=self.dbuser,password=self.dbpasswd,database=self.database)
[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()
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)
Par exemple :

.
curs.execute("select * from test")
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)")
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()
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]
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()
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!

Déclaration:
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