My implementation goes like this : Centos Server, MySQL with Rails server and currently working on a new bottle application on that.
I have a database that i want to share the date in both Rails and Bottle app. Some data in my DB are in greek.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import bottle
import bottle_mysql
app = bottle.Bottle()
# dbhost is optional, default is localhost
plugin = bottle_mysql.Plugin(dbuser='user', dbpass='pass' , dbname='db')
app.install(plugin)
@app.route('/show/<item>')
def show(item, db):
db.execute('SELECT * from visitors where id=1')
row = db.fetchone()
if row:
print row['first_name'].decode("utf-8", "replace")
return template('showitem', page=row)
print "Empty"
return HTTPError(404, "Page not found")
app.run(host='domain.tld', port=8080)
The record in my DB are one row in greek (id=1) and one in english (id=2) Without setting the charset during the connection: I get no errors when using id=2 I get this error when using id=1
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-8: ordinal not in range(128)
Connecting to the DB like that :
plugin = bottle_mysql.Plugin(dbuser='user', dbpass='pass , dbname='db', charset='utf-8')
I get this error :
OperationalError: (2019, "Can't initialize character set utf-8 (path: /usr/share/mysql/charsets/)")
Any workaround on this kind of errors ?
UPDATE : I changed the charset on my connection string into 'utf8' and went back to the first error.