mysqldb将时间戳数据转换为无

ron*_*nak 7 datetime timestamp type-conversion mysql-python

我正在使用MySQLdb与mysql数据库通信,我能够动态检索所有结果集.

我的问题是,一旦我得到结果集,有几列在mysql中被声明为时间戳,但是当它被检索时,它会变为无.

我有两列,两个都是声明的时间戳,但一个返回正确的数据,而其他返回None.utime和enddate都被声明为时间戳,但是当enddate执行时utime没有正确返回.

['utime', 'userstr', 'vstr_client', 'enddate']

((None, '000102030ff43260gg0809000000000004', '7.7.0', '1970-01-01 12:00:00.000000'))

def parse_data_and_description(cursor, data):

    res = []
    cols = [d[0] for d in cursor.description]
    print cols
    print data

    for i in data:
        res.append(OrderedDict(zip(cols, i)))
    return res

def call_multi_rs(sp, args):

    rs_id=0;
    conn = connect()
    cursor = conn.cursor()
    try:
        conn.autocommit(True)
        cursor.execute ("CALL %s%s" % (sp, args))
        while True:
            rs_id+=1
            data = cursor.fetchone( )
            listout = parse_data_and_description(cursor, data)
            print listout
            if cursor.nextset( )==None:
            # This means no more recordsets available
            break
Run Code Online (Sandbox Code Playgroud)

ron*_*nak 8

最后,在没有人回答或尝试查找更多信息后,我继续寻找更多解决方案,发现MySQLdb库将数据类型从sql转换为python,并且存在一个不会转换时间戳的错误.

我仍然不知道为什么其中一个被转换而另一个不被转换.如果有人能搞清楚,请更新一下.

但是这里是连接到mysql数据库时需要进行的修改.MySQLdb无法序列化python datetime对象

try:
    import MySQLdb.converters
except ImportError:
    _connarg('conv')

def connect(host='abc.dev.local', user='abc', passwd='def', db='myabc', port=3306):

    try:
        orig_conv = MySQLdb.converters.conversions
        conv_iter = iter(orig_conv)
        convert = dict(zip(conv_iter, [str,] * len(orig_conv.keys())))
        print "Connecting host=%s user=%s db=%s port=%d" % (host, user, db, port)
        conn = MySQLdb.connect(host, user, passwd, db, port, conv=convert)
    except MySQLdb.Error, e:
        print "Error connecting %d: %s" % (e.args[0], e.args[1])
    return conn
Run Code Online (Sandbox Code Playgroud)