首页 > 解决方案 > 我正在尝试使用 python 获取 sqlite 并希望能够获得满足特定条件的行数

问题描述

我正在将一个 excel 电子表格加载到一个 sql 表中,并且能够看到它(这样就可以了)。我想知道有多少记录符合特定标准。第 1 列和第 2 列中有名称,理想情况下,我想知道列表中每一对出现的次数。我尝试从简单开始,并且能够使用 pandas 访问 excel 数据,创建表(df.to_sql - 创建配对)并选择特定名称对的所有实例(结果 = 引擎.执行)。

请帮助我了解如何访问使用结果命令找到的实例计数。这是python - 任何帮助将不胜感激。提前致谢。

import sqlite3
import pandas as pd
from sqlalchemy import create_engine

file    = 'C:/Users/Pinev/Desktop/Pairings_List.xlsx'            # Excel input file
#output  = ''            # Excel output file

engine = create_engine('sqlite://', echo = False)

df = pd.read_excel(file, sheet_name ='Pairings_List')

print(df)

df.to_sql('pairings', engine, if_exists = 'replace', index = False)
print("5")
print(df)


results = engine.execute("Select * from pairings where Player1 = 'Bazoian, Scott'\
        AND Player2 = 'Brady, Brian'")

final = pd.DataFrame(results, columns = df.columns)

print("data Loaded")
print(final)
count = engine.execute("select count(*) from pairings")
print("count = ", count)

标签: pythonexcelpandassqlite

解决方案


我可能会推荐这种方法

import sqlite3
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.automap import automap_base

engine = create_engine('sqlite://', echo = False)

base = automap_base()
base.prepare(engine, reflect=True)

our_table = base.classes.pairings
Session = sessionmaker(bind=engine)

s = Session()
results = s.query(our_table).filter_by(Player1='Bazoian, Scott', Player2='Brady, Brian').all()


s.commit()

commit 将结束您的会话,您可以使用 filter_by 作为字符串中的“WHERE”。all() 将打印出它会找到的所有结果,您也可以使用 first() 仅打印第一个结果,并计算您可以使用 count()

您可以以简单的态度访问它,例如如果您想查看列名称

for player in results:
  print(player.Name)

推荐阅读