2016-08-31 6 views
0

私はpythonとmySQLを初めて使用しています。最初は、私はmySQLデータベースにあるデータを使用してグラフを生成したくありません。最後に、そのグラフを含むpdfレポートを生成したいと思います。あなたが正しい方向に私を指すことができればどんな助け/助言も素晴らしいでしょう。どうもありがとう。Pythonを使用してmySQLデータベースからグラフをプロットする

答えて

0

私は、1000万を超えるエントリを持つデータベースからグラフを生成しています。集約は主にデータベース自体によって行われます。操作には多くの時間がかかりますが、大丈夫です。

データベースへの接続は、sqlalchemyおよびmysqlconnectorを使用すると簡単です。 mysqlには他にも多くのコネクタがあります。

ここでは、sqlalchemy用の小さなテストスクリプトです。テーブルはこの例で生成されます。

あなたは、必要に応じて数学的な計算は外numpyのscipyのダウンロードとで行うことができます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 

で詳細を見つけることができます。 http://www.numpy.org/ https://www.scipy.org/

プロットはmatplotlibので行うことができます。には多くの例があります。 http://matplotlib.org/examples/index.html prety図も生成できます。

生成されたラテックスファイルからレポートを生成しています。しかし、Python用のpdfライブラリもたくさんあります。

これを実行するのは1つの方法です。

+0

ありがとうございます。私は間違いなくこれをチェックします。 –

+0

ちょうど私が既にやっているデータベースがあることを明確にしたいのは、プロットすることが、2つの列のデータを言うことです。ヒストグラム –

+0

データベースを表すエンティティを作成することができ、テーブルを作成するBase.metadata.create_all(engine)を呼び出す必要はありません。 SQLAlchemyを使用してデータベースにアクセスするのは簡単です。 – ego2dot0

関連する問題