首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL查询和Pandas中使用while循环

问在SQL查询和Pandas中使用while循环
EN

Stack Overflow用户
提问于 2022-04-12 15:45:29
回答 1查看 360关注 0票数 0

我正在python中运行一个SQL查询,并将表的结果存储在Pandas DataFrame中。我想运行这个查询,直到找到一个条件为止。下面是一些需要处理的示例数据:

代码语言:javascript
复制
sql table1

name      val       
post      10
sutter    15
oak       20

import pandas as pd
# mysql connection
import pymysql
from sqlalchemy import create_engine
user = 'user1'
pwd = 'pwd'
host =  'xxxx.1.rds.amazonaws.com'
port = 3306
database = 'db1'
engine = create_engine("mysql+pymysql://{}:{}@{}/{}".format(user,pwd,host,database))


# Readdata
con = engine.connect()

v = 12

query = '''
        SELECT *
        FROM table1
        WHERE val < {}
        '''.format(v)

df = pd.read_sql(query, con)

我想在满足条件之前运行这个查询。条件是数据的大小或返回的行数。上面的查询返回1行。我需要查询来更新v的值,直到满足条件为止。所以,一个while-loop就行了。

代码语言:javascript
复制
While df.shape[0] => 2:

   run query

如何在while-loop中运行查询并检查返回的行的#或数据的大小?

EN

回答 1

Stack Overflow用户

发布于 2022-04-13 09:16:42

如果您确实需要使用while True:,那么可能使用if,然后使用get数据,然后使用if检查行数,使用break退出循环,并使用v += 1运行值更大的循环。

有点像

代码语言:javascript
复制
v = 12

query = '''
        SELECT *
        FROM table1
        WHERE val < {}
        '''

while True:

    df = pd.read_sql(query.format(v), con)

    if df.shape[0] >= 2:
        break

    v += 1

但是,如果数据库中只有一行,那么它可能永远工作,并且可能需要其他条件来停止它。即。while v < 10000:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71845617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档