如何使用python从sql表中获取多个结果

时间:2021-01-10 08:01:55

标签: python visual-studio-code

我目前正在开展一个学校项目,我需要通过该项目获得用户每月偿还的总债务。但是,每个用户(例如帐号:12345-6)都有多种不同类型的贷款,利率计算方法也不同。

最初,我使用此代码(现在硬编码的帐号):

account_no = "11111-3"

def getsaving(account_no): 
    query = """\
        select SUBSTRING(LoanID, 1, 2)
        from Account_Delinquency
        where AccountNo = '{}'
        """ .format(account_no)

它会返回“PL”/“HL”/“CL”(个人贷款、房屋贷款、汽车贷款)等。之后,我会使用 if/else,我不太确定我是否'已正确编码,以确定计算每月还款的方法,如下所示:

def meet_criteria(account_no):
    if getsaving(account_no) in ["HL"]:
        HLmonthly()
    else:
        if getsaving(account_no) in ["RL"]:
            RLmonthly()
        else:
            if getsaving(account_no) in ["EL"]:
                ELmonthly()
            else:
                if getsaving(account_no) in ["CL"]:
                    CLmonthly()
                else:
                    PLmonthly()

但是,我意识到如果该用户下有多个贷款,则此代码将不起作用。例如,如果他有汽车贷款、住房贷款和个人贷款或两个个人贷款,这将不起作用。我也无法将贷款金额相加以获得该用户每月需要为所有债务支付的总金额。

我不确定是否有必要,但这些是计算每种贷款(目前仅适用于房屋贷款和装修贷款)每月还款额的代码。它们现在在不同的文件中,因为我仍然不清楚如何组合这些代码。当前年龄、月收入等目前也只是硬编码,但我应该从 sql 中的另一个表中获取。

import requests
import json

currentAge1 = "45"
totalMonthlyIncome1 = "1000"
repaymentPeriodhome ="35"
loanAmt = "20000"
repaymentPeriod ="5"

url = "https://api.ocbc.com:8243/Home_Loan/1.0?currentAge1={}&totalMonthlyIncome1={}&totalMonthlyDebt1=0&outstandingLoans1=2&repaymentPeriod={}".format(currentAge1,totalMonthlyIncome1,repaymentPeriodhome)
key = "Bearer 6abd7ab92fdf9919135e69cadacfd2b2"

url1 = "https://api.ocbc.com:8243/Renovation_Loan/1.0?homeLoanCustomer=falso&loanAmt={}&repaymentPeriod={}".format(loanAmt,repaymentPeriod)
key1 = "Bearer 6abd7ab92fdf9919135e69cadacfd2b2"

headers    = {'Accept': 'Application/json',
              'Authorization': key}

headers1    = {'Accept': 'Application/json',
              'Authorization': key1}

response = requests.get(url, headers=headers)

response1 = requests.get(url1, headers=headers1)

results = response.json()
print(json.dumps(results, indent=4, separators=(',',':')))

results1 = response1.json()
print(json.dumps(results1, indent=4, separators=(',',':')))

print("Home Loan")
print(results['results']['thereafterMonthlyPayment'])

print("other loan")
print(results1['results']['totalRepayment'])

这是 SQL 中的表的示例: |贷款编号 |帐号 |贷款ID | |:---- |:------:| -----:| | L0002 | 77777-1 | RL000005 | | L0003 | 77777-1 | HL000002 | | L0004 | 11111-3 | CL000003 | | L0005 | 33333-3 | EL000006 |

不幸的是,这段代码非常不完整,因为我在各个方面都被卡住了,而不仅仅是这个,所以我无法展示整个代码,但我希望我在这里拥有的就足够了。如果没有,请让我知道我还需要在这个问题中添加什么。谢谢!

1 个答案:

答案 0 :(得分:0)

加载pyodbc和pandas 导入熊猫以在 python 中创建数据 请确保根据您的数据库使用正确的服务器 ip 和数据库实例以及用户名和密码。在示例中我们使用的是 MS-SQL 服务器

连接数据库

server='ip address of server '
database='DB instancename'
username='username'
password='password'

cnxn = odbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

下面的部分是从sql中读取数据并直接保存到PD dataframe中,方便操作

data=pd.read_sql_query('select * from Account_Delinquency',cnxn)

根据您的要求更改选择语句