提问者:小点点

SQLite3数学函数Python


更新SQLite版本3.5.0后。可以使用SQL数学函数。如果我在pyhcarm查询中使用它,它工作得很好,但是我不能在python代码中执行查询。

然后我收到了以下错误消息:

熊猫。木卫一。sql。DatabaseError:在sql“从增加中选择日志(增加.s1)”上执行失败:没有这样的函数:log。

我用以下代码执行它:

import pandas as pd

conn = sqlite3.connect('p1_database.db')

sql = "Select log(increase.s1) from increase"
pd.read_sql_query(sql, con=conn)

我犯了什么错?我没看见。


共1个答案

匿名用户

如果未启用数学函数,则可以通过将log函数应用于列并返回序列来解决此问题。

import sqlite3
import pandas as pd
import math

with sqlite3.connect(":memory:") as conn:
    cur = conn.cursor()
    
    cur.execute("create table increase(s1 integer)")
    cur.execute("insert into increase (s1) values (1)")
    cur.execute("insert into increase (s1) values (2)")
    cur.execute("insert into increase (s1) values (100)")

    df = pd.read_sql_query('SELECT * FROM increase', conn)
    print(df)
    s = df['s1'].map(lambda x: math.log10(x))
    print(s)