我正在尝试使用python获取sqlite,并希望能够获得满足特定条件的行数

2024-04-25 03:47:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将excel电子表格加载到sql表中,并且能够看到它(这样就行了)。我想知道有多少记录符合特定标准。第1列和第2列中都有名字,我很想知道列表中每对的出现次数。我尝试过从simple开始,能够使用pandas访问excel数据,创建表(df.to_sql-创建配对),并选择一对特定名称的所有实例(results=engines.execute)

请帮助我了解如何使用results命令访问找到的实例数。这是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)

Tags: tofromimportpandasdfexecutesqlcount
1条回答
网友
1楼 · 发布于 2024-04-25 03:47:24

我可能会推荐这种方法

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

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

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

for player in results:
  print(player.Name)

相关问题 更多 >