Возможно, это связано с драйвером odbc, который использует pyodbc. Если это не поддерживает юникод, вам, вероятно, придется самостоятельно кодировать параметры, например name.encode('utf-16')
Кроме того, вы действительно должны использовать параметры запроса вместо того, чтобы сами конкатенировать строку sql, например:
query = "INSERT INTO tblPersons (name, birthday, gender) VALUES (?, ?, ?)"
cur.execute(query, [name, birthday, gender])
Я сомневаюсь, что это поможет с вашей проблемой с юникодом, но это намного безопаснее и проще.
(и другой несвязанный совет: использование pyodbc через sqlalchemy намного приятнее, даже если вы используете его только для простых запросов и не используете объектно-реляционные отображения)