Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

पायथन यूनिकोड एन्कोडिंग मुद्दा

कोशिश करें:

con = mdb.connect('loclhost', 'root', '', 'mydb', 
                  use_unicode=True, charset='utf8')

यहाँ एक प्रदर्शन है जो दिखा रहा है कि यह काम करता है:

यदि आप use_unicode=True का उपयोग नहीं करते हैं निम्नलिखित सेटअप के साथ, आपको एक UnicodeEncodeError मिलता है:

import MySQLdb
import config

def setup_charset(cursor, typ='latin1'):
    sql = 'DROP TABLE IF EXISTS foo'
    cursor.execute(sql)
    sql = '''\
        CREATE TABLE `foo` (
          `fooid` int(11) NOT NULL AUTO_INCREMENT,
          `bar` varchar(30),
          `baz` varchar(30),
          PRIMARY KEY (`fooid`)) DEFAULT CHARSET={t}
        '''.format(t=typ)
    cursor.execute(sql)
    sql = 'INSERT INTO foo (bar,baz) VALUES (%s,%s)'

connection = MySQLdb.connect(
    host=config.HOST, user=config.USER,
    passwd=config.PASS, db='test')

cursor = connection.cursor()
setup_charset(cursor, typ='utf8')
sql = u'INSERT INTO foo (bar,baz) VALUES (%s,%s)'
try:
    cursor.execute(sql, [u'José Beiträge', u'∞'])
except UnicodeEncodeError as err:
    # You get this error if you don't use
    # (use_unicode=True, charset='utf8') see below.
    print(err)

अपवाद उठाता है:

'latin-1' codec can't encode character u'\u221e' in position 0: ordinal not in range(256)

जबकि, यदि आप use_unicode=True . का उपयोग करते हैं , आप बिना किसी त्रुटि के यूनिकोड सम्मिलित कर सकते हैं:

connection = MySQLdb.connect(
    host=config.HOST, user=config.USER,
    passwd=config.PASS, db='test',
    use_unicode=True,
    charset='utf8')
cursor = connection.cursor()
cursor.execute(sql, ['José Beiträge', '∞'])
cursor.execute('SELECT * from foo')
for row in cursor:
    print(u'{} {}'.format(*row[1:]))

प्रिंट

José Beiträge ∞



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL के साथ memcache कैसे काम करता है?

  2. PHP - नेस्टेड सूची भी कॉलम में टूटी हुई (फिक्स और अपडेट)

  3. मैसकल क्वेरी उन सभी पंक्तियों को खोजने के लिए जिनका मान दूसरी पंक्ति के समान है

  4. केवल एक MySQL क्वेरी के साथ दो foreach कथन?

  5. डॉक्ट्रिन कन्वर्ट-मैपिंग चलाते समय टेबल छोड़ें