title: Why does SQLAlchemy create_engine with charset=utf8 return python type <str> and not type <unicode>?
body: <p>Using Python 2.7 and SQLAlchemy 0.7, I'm connecting to a MySQL DB with the command:</p>
  
  <pre><code>engine = create_engine('mysql://username:password@host/dbname?charset=utf8',echo=False)
  </code></pre>
  
  <p>According to the SQLAlchemy docs, setting charset=utf8 automatically implies use_unicode=1, so that all strings should come back as unicode.  <a href="http://docs.sqlalchemy.org/en/rel_0_7/dialects/mysql.html">http://docs.sqlalchemy.org/en/rel_0_7/dialects/mysql.html</a> specifically gives the example</p>
  
  <blockquote>
    <p>#set client encoding to utf8; all strings come back as unicode
    create_engine('mysql+mysqldb:///mydb?charset=utf8')</p>
  </blockquote>
  
  <p>So why, then, when I query a text field in a mapped class, does that field end up with type "str"?</p>
  
  <pre><code>Base = declarative_base(engine)
  
  class RegionTranslation(Base):
      ''''''
      __tablename__ = 'RegionTranslation'
      __table_args__ = {'autoload':True}
      def __init__(self, region_id, lang_id, name):
          self.region_id = region_id
          self.lang_id = lang_id
          self.name = name
  
  rtrans = session.query(RegionTranslation).filter_by(region_id = 1, lang_id = 6).one()
  print (type(rtrans.name))
  </code></pre>
  
  <p>The output is</p>
  
  <pre><code> &lt;type 'str'&gt;
  </code></pre>
  
  <p>If I just accept this and decode the string before using it, things are fine.  But I don't get why the above code isn't returning the type 'unicode'.  Can someone please, please explain this?</p>