首页 > 解决方案 > 将数据帧解析为 SQL 表的函数

问题描述

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

df-
dataframe 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()


任何帮助深表感谢。

标签: python-3.xpandasdataframepyodbc

解决方案


正如评论中的绅士所建议的那样,我能够使用 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')

推荐阅读