sql-server - 对标签进行分组并将数据从 Python 导出回 SQL Server
问题描述
我正在尝试使用以下代码使用fuzzywuzzy 清理列:
import pyodbc
from fuzzywuzzy import fuzz
# Getting sql list
conn = pyodbc.connect('Driver={SQL Server};'
'Server=USER-PC\SQLEXPRESS;'
'Database=AdventureWorks2014;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute("SELECT top 100 Publisher FROM dbo.Publishers where publisher like '%Ebate%'")
Product_list = cursor.fetchall()
# Groups of names with Levenshtein distance > 77
Groups = list()
for name in Product_list:
for grp in Groups:
if all(fuzz.ratio(name, wd) > 78 for wd in grp):
grp.append(name)
break
else:
Groups.append([name, ])
print('output Groups:', Groups)
输出:
output Groups: [[('Ebates.com', ), ('Ebates', ), ('Ebates Inc', ), ('Ebates.com', ), ('Ebates', ), ('Ebates', ), ('Ebates', ), ('Ebates', ), ('Ebates.ca', ), ('Ebates.com', ), ('Ebates', )], [('ExtraRebates', ), ('Mr. Rebates', ), ('RebatesMe', ), ('ExtraRebates', ), ('Mr. Rebates', ), ('RebatesMe', )] ...
作为 Python 新手,我一直在寻找一种方法:
- 在单独的列中命名每个组。
- 将结果(分组、发布者)导出到 SQL 上的新表。
任何帮助深表感谢 !
解决方案
为此,您可以只使用 pandas 库(只需在终端/命令提示符上执行“pip install pandas”)。
您可以为每个结果创建一个包含一列的表,并将此表推送到您的 sql 数据库:
import pandas as pd
tableresult = pd.DataFrame(Groups).T
tableresult.to_sql('table', engine, index=False, if_exists='replace')
在您的“to_sql”命令中:
- index=False:避免在 sql 表中推送索引列
- if_exists='replace':sql中推表的一种方式
有关更多信息,您可以在此处查看。
我希望它有所帮助,
BR。
推荐阅读
- java - 在 64 位 JVM 上是读取和写入双原子吗?
- sql-server - 在所有数据库上查询 INFORMATION_SCHEMA.COLUMNS?
- javascript - CORS 阻止了我的后端服务器,如何解决?使用 Springboot java 作为后端, react js 作为我的前端
- sql - UNION ALL 未按预期执行 - Oracle SQL
- python - 在 Azure Functions 中导入 Google Cloud python 库时出错
- javascript - 当我尝试将其作为道具传递给其他组件时,获取响应返回未定义
- nosql - 是否使用 Kafka Streams 和/或 KSQL 对来自数据库的数据流进行非规范化处理
- mysql - 在 MySQL 8.0 中,我有一个数据字段类型为 GEOMETRY 的列。为什么我的查询中的值没有一致地显示?
- javascript - 单击按钮时删除交叉并转到下面的行
- android - 我在 android studio 模拟器中运行的应用程序没有加载 localhost 数据库内容