python-3.x - 将数据帧解析为 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()
任何帮助深表感谢。
解决方案
正如评论中的绅士所建议的那样,我能够使用 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')
推荐阅读
- algorithm - 使用 Kruskal 算法找到图的最小生成树
- amazon-web-services - AWS 根账户无法访问组织账户
- expo - Expo 中的 OCR 功能
- javascript - Express 服务器路由问题
- python - 在网络刮板脚本的 for 循环中仅反转没有数字的字符串
- php - 带有ajax的php-mysql登录系统
- amazon-web-services - 如何将新容器附加到 AWS ECS 中正在运行的任务?
- r - 如何使用插入符号(maxit)为地球传递 glm 控制参数
- ruby-on-rails - Rails API 在 camelCase 中呈现所有响应
- c - C中的Pthread_cond_wait