2012-06-18 9 views
13

मैं फ्लास्क और MySQL का उपयोग कर एक काफी सीधा वेब ऐप विकसित कर रहा हूं।pyMySQL सेट कनेक्शन चरित्र सेट

मैं यूनिकोड के साथ संघर्ष कर रहा हूं। उपयोगकर्ता कभी-कभी सामान से कॉपी की गई चीजें पेस्ट करते हैं और यह पुराने स्मार्ट कोट्स u'\u201c' के साथ गिर रहा है।

एक छोटी सी जांच से पता चलता है कि मेरे पास MySQL के कनेक्शन का उपयोग Latin1 वर्णसेट (डिफ़ॉल्ट होने लगता है) का उपयोग कर रहा है।

इसके कनेक्शन के लिए यूनिकोड का उपयोग करने के लिए मैं इसे कैसे निर्दिष्ट कर सकता हूं?

मैं pyMySQL का उपयोग कर रहा हूं, जो MySQLdb के लिए ड्रॉप-इन प्रतिस्थापन होने का दावा करता है। MySQLdb connection ऑब्जेक्ट्स के लिए set_character_set(self, charset) फ़ंक्शन को परिभाषित करता है, लेकिन pyMySQL नहीं करता है (अगर मैं कोशिश करता हूं तो मुझे एक त्रुटि मिलती है)।

+0

आप 'सेट नाम यूटीएफ 8' –

उत्तर

46

मैंने pyMySQL source में चारों ओर घूमकर इसे काम किया (मैंने कोशिश की थी, लेकिन सही जगह नहीं मिल सका!)।

conn = pymysql.connect(host='localhost', 
         user='username', 
         passwd='password', 
         db='database', 
         charset='utf8') 

मेरी समस्या हल:

जब आप कनेक्शन बनाने यह निर्दिष्ट कर सकते हैं।

+2

बताते हुए हर कनेक्शन के लिए कच्ची क्वेरी का प्रयास कर सकते हैं, मैं स्क्लेक्केमी के साथ pymysql का उपयोग करने की कोशिश कर रहा था, इसलिए मेरे लिए फिक्स यूआरएलएल + pymysql: // user_name @ host_name/डेटाबेस_नाम? charset = utf8mb4'; इस जवाब में बहुत मदद की! –

संबंधित मुद्दे