2016-08-31 3 views
0

Я новичок в python и mySQL. Первоначально я хочу генерировать несколько графиков, используя данные, которые у меня есть в базе данных mySQL. В конце я хочу создать отчет в формате pdf, содержащий этот график. Любая помощь/советы будет здорово, если вы, ребята, можете указать мне в правильном направлении. Огромное спасибо.Использование Python для построения графиков из базы данных mySQL

ответ

0

Я создаю графики из базы данных с> 10 миллионов записей. Агрегация в основном выполняется самой базой данных. Некоторые операции занимают много времени, но все в порядке.

Подключение к базе данных легко с помощью sqlalchemy и mysqlconnector. Есть много других разъемов для mysql.

Вот небольшой тестовый скрипт для sqlalchemy. Таблицы создаются в этом примере.

Вы можете найти больше на http://www.sqlalchemy.org/

from sqlalchemy import create_engine 
from sqlalchemy.orm import sessionmaker 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy import Column, String, Integer, BigInteger, Text, Index 
from sqlalchemy.orm.scoping import scoped_session 


Base = declarative_base() 
class ATestEntity(Base): 
    __tablename__ = 'a_test_entity_table' 

    id = Column(String(32), primary_key=True) 
    astring = Column(String(32)) 

    aint = Column(BigInteger, default=-1) 


dialect = "mysql+mysqlconnector" 
username = "username" 
password = "passwort" 
host = "localhost" 
port = "3306" 
database = "tests" 

dbconnector = '%s://%s:%[email protected]%s:%s/%s?charset=utf8mb4&use_unicode=0' % \ 
    (dialect, username, password, host, port, database,) 
engine = create_engine(dbconnector) 
session_factory = sessionmaker(autocommit=False, autoflush=False) 
session_factory.configure(bind=engine) 

Base.metadata.create_all(engine) 

s = scoped_session(session_factory) 
try: 
    #Create a new entity 
    a_obj = ATestEntity() 
    a_obj.id = 'test' 
    a_obj.astring = 'this is a test' 
    a_obj.aint = 10 
    s.add(a_obj) 
    s.commit() 

    #Delete a entity 
    s.query(ATestEntity).filter(ATestEntity.id == 'test').delete() 
    s.commit() 

except: 
    s.rollback() 
    raise 

Математический расчет снаружи может быть сделано с NumPy и SciPy в случае необходимости. http://www.numpy.org/ https://www.scipy.org/

Участок может быть сделано с Matplotlib. Есть много примеров. http://matplotlib.org/examples/index.html Вы также можете создавать диаграммы чертежей.

Я создаю свои отчеты из созданных латексных файлов. Но есть много PDF-библиотек для python.

Это только один способ сделать это.

+0

Большое спасибо. Я обязательно проверю это. –

+0

Просто хочу пояснить, что у меня уже есть база данных, что я хочу сделать, это график, позволяющий говорить данные из двух столбцов, например. гистограмма. –

+0

Вы можете создавать объекты, которые представляют вашу базу данных, и вам не нужно вызывать Base.metadata.create_all (engine), который создает таблицы. Очень легко получить доступ к вашей базе данных с помощью SQLAlchemy. – ego2dot0

Смежные вопросы