我正在编写一个脚本,它从excel文件读取数据并写入postgresql数据库。我已经从excel文件中读取数据并将每个行数据存储为字符串数组。
我尝试了几件事,比如
for x in range(len(sh.columns)):
i = users.insert()
i.execute({sh.columns[x] : sh.values[0][x]})
以下是我的Excel工作表和我在用户引用的postgreSQL数据库中编辑的表的引用。
我也试过了
'INSERT INTO users VALUES %s'%(tuple(sh.values[0])
以及其他一些变体。
答案 0 :(得分:0)
为了确保您可以写信给表格,请尝试更原始的方式:
i.execute( "INSERT INTO table (field1, field2, field3) VALUES (%s, %s, %s) " % (data1, data2, data3) )
修改上述内容以获得适当的表名,字段名和数据值。
一旦这样做,你可以从sh。
改进写作答案 1 :(得分:0)
这是我的解决方案。这就是我使用的,它就像一个魅力!
import pandas as pd
import sqlalchemy as sql
import sqlalchemy.orm as orm
sh = pd.ExcelFile("ExcelFileName").parse("SheetName")
db=sql.create_engine('DBtype://username:password@localhost:postnumber/dbname')
metadata = sql.schema.MetaData(bind=db,reflect=True)
table = sql.Table('TableinDB', metadata, autoload=True)
class Row(object):
pass
rowmapper = orm.Mapper(Row,table)
print table.columns
Sess = orm.sessionmaker(bind = db)
session = Sess()
for x in range(len(sh.values)):
row1 = Row()
row1.field1 = sh.values[x][0]
row1.field2 = sh.values[x][1]
#Add as many fields as you want
session.add(row1)
#forloop ends
session.commit()