Python 打印存储在MySQL数据库中的不同值

Python 打印存储在MySQL数据库中的不同值,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,在myISAM的MySQL表中,我有一个整数值ex.011。当我在Python中查询时,它会打印我的值11,在数字之前删除0。它应该打印存储在DB ex.011中的确切值,而不是11。有什么帮助吗?您的列是一个int,因此MySQLdb会在查询结果中返回一个整数值。但是,我认为您应该能够编写一个mySQLdb结果集包装器(或者可能找到其他人已经编写的包装器),该包装器检查结果集列上的标志集,并适当地强制转换为字符串 查看cursor.description和cursor.description\

在myISAM的MySQL表中,我有一个整数值ex.011。当我在Python中查询时,它会打印我的值11,在数字之前删除0。它应该打印存储在DB ex.011中的确切值,而不是11。有什么帮助吗?

您的列是一个
int
,因此MySQLdb会在查询结果中返回一个整数值。但是,我认为您应该能够编写一个mySQLdb结果集包装器(或者可能找到其他人已经编写的包装器),该包装器检查结果集列上的标志集,并适当地强制转换为字符串

查看
cursor.description
cursor.description\u标志以及PEP-249。我认为(实际上我还没有试过)以下几点可以让你开始:

def get_result_set_with_db_specified_formatting(cursor):
    integer_field_types = (MySQLdb.constants.FIELD_TYPE.TINY,
                           MySQLdb.constants.FIELD_TYPE.SHORT,
                           MySQLdb.constants.FIELD_TYPE.LONG,
                           MySQLdb.constants.FIELD_TYPE.LONGLONG,
                           MySQLdb.constants.FIELD_TYPE.INT24)
    rows = cursor.fetchall()
    for row in rows:
        for index, value in enumerate(row):
            value = str(value)
            if (cursor.description[index][1] in integer_field_types
                and cursor.description_flags[index] & MySQLdb.constants.FLAG.ZEROFILL):
                if len(value) < cursor.description[index][2]:
                    value = ('0' * (cursor.description[index][2] - len(value))) + value
            row[index] = value
    return rows
def get_result_set_与指定的\u db_格式(光标):
整数\字段\类型=(MySQLdb.constants.field\类型.TINY,
MySQLdb.constants.FIELD_TYPE.SHORT,
MySQLdb.constants.FIELD_TYPE.LONG,
MySQLdb.constants.FIELD_TYPE.LONGLONG,
MySQLdb.constants.FIELD_TYPE.INT24)
rows=cursor.fetchall()
对于行中的行:
对于索引,枚举(行)中的值:
value=str(值)
整型字段类型中的if(cursor.description[index][1]
和cursor.description_flags[index]&MySQLdb.constants.FLAG.ZEROFILL):
如果len(value)
可能是,在这种情况下,简单的零填充可以吗

>>> print str(11).zfill(3)
011

据我所知,这是数字的附加部分。如果其长度不是常量,则需要将DB中的数据类型更改为VARCHAR。

它是整数还是字符串?如果它是整数,则没有0填充。您在哪里看到的值列为
011
?您可能有一个不同的数据类型,或者您的客户端在您不知道的情况下添加了填充。类型为整数:“id\u order\u ticket int(3)ZEROFILL AUTO\u INCREMENT NOT NULL”,我在mysql db中看到它是ex.011。我正在使用SQLAlchemy查询:“ast_order\u ticket=self.session.query(OrderTicketNumber).order_by(OrderTicketNumber.id\u order.desc()).first()”AttributeError:“long”对象没有属性“zfill”@Fi3n1k,检查您是否编写了
str(11).zfill(3)
而不是
long(11).zfill(3)