2011-01-25 4 views
0

Salutationspython pour MSSQL problème codant

En utilisant bibliothèque pymssql, je veux écrire des données dans une base de données MSSQL mais je rencontre encodant des questions. Voici mon exemple de code pour écrire à la DB:

# -*- coding: utf-8 -*- 
import _mssql 

.... 
Connection info data here 
.... 


def mssql_connect(): 
    return _mssql.connect(server=HOST, user=USERNAME, password=PASS, database=DB, charset="utf-8") 

con = mssql_connect() 
INSERT_EX_SQL = "INSERT INTO myDatabsae (Id, ProgramName, ProgramDetail) VALUES (1, 'Test Characters ÜŞiçÇÖö', 'löşüIIğĞü');" 
con.execute_non_query(INSERT_EX_SQL) 
con.close() 

Malheureusement les données qui a été écrit à la DB est corrompu:

enter image description here

Le Collacation de mon MSSQL db est: Turkish_CI_AS Comment Cela doit être résolu?

+0

Est-ce que la spécification de la chaîne est explicite comme aide unicode? par exemple. 'INSERT_EX_SQL = u" INSCRIRE dans myDatabsae (Id, ProgramName, ProgramDetail) VALEURS (1, 'Caractères de test ÜŞiçÇöö', 'löşüIIğĞü'); "' – Kimvais

+0

Si je unicode la requête, je reçois une telle erreur: UnicodeEncodeError: codec 'ascii' ne peut pas encoder les caractères dans la position 84-85: ordinal pas dans la gamme (128) – Hellnar

Répondre

1

Here is a possible solution:

La clé est INSERT_EX_SQ.encode('your language encoder'). Essayez à la place:

con.execute_non_query(INSERT_EX_SQ.encode('your language encoder')) 
+0

a travaillé pour moi :) – Aki