你如何在Python中实现SQL方面?

时间:2018-05-24 16:39:24

标签: python sql runtime

我有这个提示(如下所示)。我想我知道如何在SQL中编写它(如下所示,但如果它不正确请告诉我)。我希望获得与SQL相同但使用Python的结果。

问题 - 给定一组数据,编写一个解析数据的函数,1)找到给定月份的收入2)找到给定月份的未预留办公室的总容量。

SQL猜测:

SELECT revenue FROM financials WHERE month = "June"
SELECT SUM(capacity) FROM booking WHERE month = "June" and office_reserved IS NULL

我没有这方面的实际数据所以我只是编写了列名。第一个是直截了当的。第二个是我认为会有一个数据库,其中包含月 - 日 - office_reserved - 容量(即12个人可以坐在房间里)。

Python猜猜:

arr = []
i = 0
for i < len(financials):
   if financials.month[i] = "June":
      arr.append(financials.revenue[i])
i+=1


arr = []
i = 0
for i < len(booking):
     if booking.month[i] = "June" and office_reserved IS NULL:
          arr.append(booking.capacity[i])
     i+=0
print(sum(arr))

这让我相信在查找数据的情况下,SQL在计算上比Python快。在大型计算或程序的实例中,Python可能更快。 ??

2 个答案:

答案 0 :(得分:0)

就我而言,除了SQL之外,您无法使用其他任何东西与RDBMS进行交互。 也就是说可能有SQL的Python接口。从来没听说过。

为了能够使用其他语言(如Python或Javascript(node.js))作为后端解决方案,您将不得不使用noSQL数据库,这意味着主要是JSON数据库,它依赖于完全不同的属性,规则和方案。现在,您可以通过选择分布式文件系统解决方案,使数据库为大型数据集和处理(大数据)做好准备。但是,虽然在处理大数据时效率更高,但在某些特定情况下(快速读取,事务,小数据集......),此选项可能会更慢。更多详情:https://stackoverflow.com/a/50457922/5922920

答案 1 :(得分:0)

我能想到的最接近的是熊猫。例如,我创建了一个伪数据集,您可以将其放入数据框中以查找值。我会对熊猫做更多的研究,因为它在处理与此类似的数据方面相当不错。以下是一个例子:

Financials = pd.DataFrame([100000, 2000000, 300000, 4000000], columns=['Revenue'], index=['Jan', 'Feb', 'April', 'June'])

print(Financials[Financials['Revenue'] < 400000])

这将是你的输出:

         Revenue
Jan     100000
April   300000

您可以使用pandas库从.csv或许多其他资源导入数据,并执行您想要执行的布尔选择,这有点类似于SQL,但没有任何内容可以与SQL语法完全匹配。

一个好的库,您可能知道或者可能不知道是否是pymysql,它允许您使用Python连接到MySQL数据库。

以下是我正在使用的程序示例:

import pymysql
import pymysql.cursors

mydb = pymysql.connect(user='sample', passwd='sample_pass', db='medical_app', host='localhost')
cur = mydb.cursor()

select = cur.execute('''SELECT * FROM patient_login''')
print(select)

如您所见,您可以在Python中访问数据库,创建游标对象,然后执行SQL命令。您可能已经或可能不知道这一点,但我认为它也值得注意。