“exc_value.args” at line 2591 may caused the error " AttributeError: 'str' object has no attribute 'args' " sometime
On python 2, I get:

```
ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 140311384954624 and this is thread id 140311230535424
```

Which I believe is the correct traceback. What python version are you using?
 Actually, on python 3, I get:

```
peewee.ProgrammingError: SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 140570851063552 and this is thread id 140570760951552
```

So I believe this is working as I expect.
 Thanks for you reply! I  used Python 2.6.6 on CentOs 6.5 x86_64 and got the error.
 Cool, I don't currently have access to a Python 2.6 interpreter -- I'll see what I can do about compiling one. I wonder if the difference in exceptions is documented anywhere..I looked at the Python 2.7 changelog but nothing jumped out at me.
 I'm confused why `exc_value` is a string, according to the python 2.6 docs, `exc_value` should be an instance of the `exc_type` being raised:

https://docs.python.org/2.6/library/sys.html#sys.exc_info

> value gets the exception parameter (its associated value or the second argument to raise, which is always a class instance if the exception type is a class object)
 I am unable to replicate the error. Here is a script I am using:

``` python
import sqlite3
import sys
import threading

conn = sqlite3.connect('/tmp/my.db')

def foo():
    try:
        curs = conn.cursor()
        curs.execute('select 1')
    except Exception as exc:
        print exc
        et, ev, tb = sys.exc_info()
        print et
        print ev
        print type(ev)
        print ev.args

t = threading.Thread(target=foo)
t.start()
t.join()
```

Output:

```
python2.6 x.py
SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 140622844954368 and this is thread id 140622810523392
<class 'sqlite3.ProgrammingError'>
SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 140622844954368 and this is thread id 140622810523392
<class 'sqlite3.ProgrammingError'>
('SQLite objects created in a thread can only be used in that same thread.The object was created in thread id 140622844954368 and this is thread id 140622810523392',)
```

What do you think? What output do you get with that script?
 I'm going to close this out, please reopen if you would like to add anything.
 It seems like MySQLdb python module affects on `exc_value` behavior. Workaround: use PyMySQL module instead.

eg:
if  you haven't seted "check_same_thread=False" may lead to:
  exc_value = “SQLite objects created in a thread can only be used in that same thread.The object was created in thread id.....”
and then: 
    reraise(new_type, new_type(*exc_value.args), traceback)
AttributeError: 'str' object has no attribute 'args'
