Je suis en train de créer une base de données SQLite avec pandas géants.pandas géants créer la base de données avec l'index
Je suis en mesure d'enregistrer les données avec:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine(path, echo=False)
df_flows.to_sql('flows', engine, if_exists='append', index=False, index_label='First')
et je peux le lire en arrière avec
df = pd.read_sql("SELECT * FROM flows WHERE First>1504101810 AND First<1504105409", engine)
Les données sont sur le disque, mais je pense que l'indexation ne fonctionne pas correctement comme:
In [22]: from sqlalchemy.engine import reflection
In [23]: insp = reflection.Inspector.from_engine(engine)
In [24]: insp.get_indexes('flows')
Out[24]: []
maintenant, j'ai 2 questions:
1) Pourquoi la colonne First
ne semble pas insp.get_indexes('flows')
2) Comment puis-je ajouter 1 ou plusieurs index à la base de données que j'ai créé.
EDIT:
Ceci est la structure de la trame de données
In [25]: df_flows.dtypes
Out[25]:
Protocol object
Src object
SrcPort float64
Dst object
DstPort float64
Group ID int64
Port object
VPort int64
IP TOS object
VLAN ID float64
VLAN Pri float64
MPLS Exp float64
Application object
Packets int64
Messages int64
Bytes int64
First int64
Last int64
SrcSubnet object
DstSubnet object
dtype: object
donc vous dites que si 'index_label' n'est pas' None' alors l'index doit être défini sur True et il est automatiquement remplacé par le nom de colonne spécifié? – Donbeo
Non. Je dis que 'index_label' est ignoré si' index = False'. Si 'index = True' (la valeur par défaut), il écrira l'index en tant que colonne en utilisant son nom. Cependant, vous pouvez utiliser un autre nom en utilisant le paramètre 'index_label'. – Alexander
ok mais si je veux ajouter des index plus tard si je veux indexer par plusieurs colonnes? – Donbeo