【问题标题】:Function to parse a dataframe into a SQL table将数据帧解析为 SQL 表的函数
【发布时间】:2021-06-09 00:50:55
【问题描述】:

我正在尝试创建一个函数,该函数将接受一个数据帧并将该数据帧解析到一个 sql server 表中。
我不知道插入查询下方的 select 语句需要什么。

df- 数据框
desttable - 需要解析的目标表。
tablecols - 表格的表格列数组

# 将 DataFrame 插入到表中 def InsertintoDb(self, df, desttable, tablecols): tablecolnames = ','.join(tablecols) qmark = ['?' for s in tablecols] allqmarks = ','.join(qmark) #rowappendcolname = ','.join(['row.' + s for s in tablecols]) 对于索引,df.iterrows() 中的行: 游标.执行( '''INSERT INTO [Py_Test].[dbo].''' + desttable + ''' (''' + tablecolnames + ''')VALUES (''' + allqmarks + ''')''', ) self.conn.commit()


非常感谢任何帮助。

【问题讨论】:

  • 嗨,pandas 有一个名为 df.to_sql 的函数,你唯一需要的额外的东西是 SQLAlquemy,这里有一个问题的链接,上面有一个很好的例子stackoverflow.com/questions/25661754/… 试试这个,祝你好运

标签: python-3.x pandas dataframe pyodbc


【解决方案1】:

正如评论中的绅士所建议的,我可以使用 df.to_sql 来做到这一点。这是工作代码-

DbOps 类: def __init__(self): self.username = '' self.password = '' self.ipaddress = '本地主机' #self.port = 5439 self.dbname = '' # 一个长字符串,包含必要的 Postgres 登录信息 self.engine = sqlalchemy.create_engine( f"mssql+pyodbc://{self.username}:%s@{self.ipaddress}/{self.dbname}?driver=SQL+Server+Native+Client+11.0" % urlquote(f' {self.password }')) def InsertintoDb(self, df, desttable, tablecols): df.to_sql(desttable, self.engine, index=False, if_exists='append')

【讨论】:

    猜你喜欢
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2019-09-09
    相关资源
    最近更新 更多