Suppose you have a table like this:
class Sample(Base):
__tablename__="Sample"
X=Column(Integer, primary_key=True)
Y=Column(Integer)
Z=Column(Integer)
Suppose you have the following data in a file named "test.csv":
X,Y,Z
1,2,3
4,5,6
You can do bulk import, given that no duplicates in your data and no duplicates in your existing table:
import pyexcel as pe
...
pe.save_as(file_name="test.csv", dest_session=session, dest_table=Sample)
Here is the complete code for bulk import to sqlite:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column , Integer
from sqlalchemy.orm import sessionmaker
import pyexcel as pe
engine=create_engine("sqlite:///tmp.db")
Base=declarative_base()
class Sample(Base):
__tablename__="Sample"
X=Column(Integer, primary_key=True)
Y=Column(Integer)
Z=Column(Integer)
Session=sessionmaker(bind=engine)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
session = Session()
# produce test csv
adict = {
"X": [1, 4],
"Y": [2, 5],
"Z": [3, 6]
}
sheet = pe.get_sheet(adict=adict)
sheet.save_as("test.csv")
# end production
# bulk import
pe.save_as(file_name="test.csv", dest_session=session, dest_table=Sample)
result = pe.get_dict(session=session, table=Sample)
# verify result
print(result)
In real world, columns are of differnt types, so you may want to format your columns after loading csv file before the bulk upload.