Q:

sqlalchemy, setting MySQL charset as `create_engine` argument

I create sqlalchemy engine connecting to MySQL database.  I want to specify charset as create_engine argument.  
If I use create_engine liKe that:
create_engine('mysql+mysqldb://pd:pd@localhost/pd?charset=utf8') 

then all is fine.  But, when I use it like that:
create_engine('mysql+mysqldb://pd:pd@localhost/pd', charset='utf8') 

then I get the following error:
TypeError: Invalid argument(s) 'charset' sent to create_engine(), using
    configuration MySQLDialect_mysqldb/QueuePool/Engine.  Please check that
    the keyword arguments are appropriate for this combination of components. 

According to the documentation, this usage should be possible:

The string form of the URL is
  dialect+driver://user:password@host/dbname[?key=value..] ...
**kwargs takes a wide variety of options which are routed towards their appropriate components.  Arguments may be specific to the Engine,
  the underlying Dialect, as well as the Pool.  Specific dialects also
  accept keyword arguments that are unique to that dialect.  Here, we
  describe the parameters that are common to most create_engine() usage. 

Why I cannot specify charset separately? 

A:

the additional DBAPI arguments, when passed separately, are passed via connect_args.