如何使用SQL数据库中的列值作为Python函数的参数?

时间:2019-04-19 19:45:17

标签: python mysql

我试图检查天气情况,我的台式电影的某一列中的年份是否为a年。如果是的话,我想对应的电影名称。

我尝试了以下代码

def leap_year(year):
    if year%4==0:
        if(year%100==0):
            if(year%400==0):
                return True
            else:
                return False
        else:
            return True           
    else:
        return False

result=pd.read_sql_query("select m.name from movie m where m.year = {}".format(leap_year(m.year)),conn)

print(result)

我知道它不起作用,因为我无法直接通过m.year,但是我试图找到但无法获得正确的语法来做到这一点。

3 个答案:

答案 0 :(得分:0)

使用calendar

import calendar

def leapyear(year):
    result = calendar.isleap(year)
    if result == True:
        print(str(year) + ' is a leap year')
    else:
        print(str(year) + ' is not a leap year')

leapyear(2018)

使用sql列的年份作为函数的年份输入

答案 1 :(得分:0)

我不太了解您要如何使用您的代码...但是,这是我能想到的最好的方法

import sqlite3

def leap_year(year):
    if year%4==0:
        if(year%100==0):
            if(year%400==0):
                return True
            else:
                return False
        else:
            return True;

    else:
        return False

with sqlite3.connect("db.db") as conn:
    cur = conn.cursor()
    cur.execute("SELECT m.year FROM movie WHERE m.year = ?", (leap_year(m.year)))
    results = cur.fetchall()
    for result in results:
        print(result)

答案 2 :(得分:0)

首先从表中选择所有年份和电影名称。您现在设置的方式是将其过滤到一年,这听起来并不像您想要的那样。

results = pd.read_sql_query("select name, year from movies", con=conn)

现在检查结果中的每一年并对其运行run年功能。

import calendar

for index, row in results.iterrows():
    if calendar.isleap(row['year']):
        print(row['name'])