2016-04-20 8 views
1

исполняет заявлениеPython панд получить максимальное значение из MySQL

sequence = pd.read_sql_query('SELECT MAX(_SequenceNumber) AS sequence_number FROM betting.betting', database) 

получить dataframe

sequence_number 
0    4495 

Я не могу понять, как получить только 4495 я что-то пытаюсь как

sequence = dataframe.iloc[0] 

Все еще не дает мне

sequence = 4495 

Вы можете мне помочь?

+0

Вы имеете в виду, что вы хотите, чтобы dataframe без заголовка индекса и столбца? Или вы просто хотите получить значение int? –

ответ

1

Я думаю, что вы можете использовать at или iat для fast scalar value getting:

print dataframe.at[0, 'sequence_number'] 
4495 

print dataframe.sequence_number.iat[0] 
4495 

print type(dataframe.at[0, 'sequence_number']) 
<type 'numpy.int64'> 

print type(dataframe.sequence_number.iat[0]) 
<type 'numpy.int64'> 
0

read_sql_query возвращает dataframe. Как было предложено @jezrael, iat - лучший способ доступа к скаляру в кадре данных.

Если вы используете SQLAlchemy, однако есть также функция scalar, которая возвращает первый элемент первого результата, None, если результат отсутствует, или ошибка, если имеется более одного результата.

from sqlalchemy import create_engine, Table, MetaData, func 
from sqlalchemy.orm import sessionmaker 

# Connection set-up. 
engine = create_engine(...) 
Session = sessionmaker(bind=engine) 
session = Session() 
metadata = MetaData() 

my_table = Table('betting.betting', metadata, autoload=True, autoload_with=engine) 

# Query scalar. 
>>> session.query(func.max(my_table.c._SequenceNumber)).scalar() 
52 
Смежные вопросы