python中SQLite3中的指数

python中SQLite3中的指数,python,python-3.x,sqlite,Python,Python 3.x,Sqlite,我正在编写一个python代码,它创建一个SQLite数据库,并对大量表进行一些计算。首先,我通过python在SQLite中执行此操作的原因是内存,我的数据量很大,如果在(比如)pandas中运行,将导致内存错误。如果被驯服,这将需要很长时间,一般来说,因为熊猫在融合和群体等方面行动缓慢 所以我现在的问题是,我想计算表中一列的指数(下面的示例代码),但SQLite似乎没有EXP函数 我可以将数据写入数据帧,然后使用numpy来计算EXP,但这超过了推动我的两个DBs的整个点,并且没有额外的时间

我正在编写一个python代码,它创建一个SQLite数据库,并对大量表进行一些计算。首先,我通过python在SQLite中执行此操作的原因是内存,我的数据量很大,如果在(比如)pandas中运行,将导致内存错误。如果被驯服,这将需要很长时间,一般来说,因为熊猫在融合和群体等方面行动缓慢

所以我现在的问题是,我想计算表中一列的指数(下面的示例代码),但SQLite似乎没有EXP函数

我可以将数据写入数据帧,然后使用numpy来计算EXP,但这超过了推动我的两个DBs的整个点,并且没有额外的时间在DB和python之间来回读/写

所以我的问题是:有没有办法在数据库中计算指数?我已经读到我可以用python在sqlite3中创建函数,但我不知道如何创建。如果你知道如何或可以指导我在哪里可以找到相关的信息,那么我会很感激,谢谢

我试图进行计算的代码示例,请注意,这里我只是提供了一个示例,其中表格直接来自csv,但在我的过程中,它实际上是在大量megres和group BY之后在DB中创建的:

import sqlite3

#set path and files names
folderPath = 'C:\\SCP\\'
inputDemandFile = 'demandFile.csv'

#set connection to database
conn = sqlite3.connect(folderPath + dataBaseName)
cur = conn.cursor()

#read demand file into db
inputDemand = pd.read_csv(folderPath + inputDemandFile)
inputDemand.to_sql('inputDemand', conn, if_exists='replace', index=False)

#create new table and calculate EXP
cur.execute('CREATE TABLE demand_exp AS SELECT from_zone_id, to_zone_id, EXP(demand) AS EXP_Demand FROM inputDemand;')
我已经读到我可以用python在sqlite3中创建函数,但我不知道如何创建

这就是连接。创建函数()


你用python试过了吗?有一些在线测试,也许你在说python很慢之前先检查一下。。。pandas的过滤时间更高…不是groupby,合并链接中提供的内容是的,你是对的,对不起,我没有意识到图表显示了不同的内容。文章中的这个测试似乎是这样的。如果在pandas中完成,我已经在我的过程中快速记录了一些时间,我估计需要+15天,这使我认为SQLite可能会更快,因为SQL通常是为megre/join和处理大数据而构建的。谢谢你指出这一点
>>> import math
>>> conn.create_function('EXP', 1, math.exp)
>>> cur.execute('select EXP(1)')
>>> cur.fetchone()
(2.718281828459045,)