【发布时间】:2017-09-21 11:10:19
【问题描述】:
我有一个带有一张纸的 excel 文件。这包含两列 num1、num2 并且它们都具有整数值。我正在尝试使用 Sqlalchemy 和 pandas 提取这些数据并将其插入 Mysql 数据库。
from sqlalchemy import create_engine, MetaData,Column,Integer
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker,validates
import pandas as pd
Base = declarative_base()
connection_string = # give your connection string here
engine= create_engine(connection_string)
Base.metadata.bind = engine
s = sessionmaker()
session = s()
class a(Base):
__tablename__ = 'a'
id = Column(Integer,primary_key=True)
num1 = Column(Integer)
num2 = Column(Integer)
a.__table__.create(checkfirst=True)
excel_sheet_path = # give path to the excel sheet
sheetname = # give your sheet name here
df = pd.read_excel(excel_sheet_path,sheetname).transpose()
dict = df.to_dict()
for i in dict.values():
session.add(a(**i))
session.commit()
这段代码给我一个 AttributeError 说
AttributeError: 'numpy.int64' object has no attribute 'translate'
所以在将数据帧转换为字典之前,我尝试了许多函数,如 astype、to_numeric 将数据类型更改为普通的 python int,但它们根本不起作用。仅当数据帧具有所有整数值时,问题似乎仍然存在。如果您至少有一列类型为字符串或日期,则程序正常工作。我该如何解决这个问题?
【问题讨论】:
-
是的。我正在使用 pymysql
-
我该如何解决这个错误?
标签: python pandas dataframe sqlalchemy