【问题标题】:OperationalError: (sqlite3.OperationalError) too many SQL variables, while using SQL with dataframesOperationalError: (sqlite3.OperationalError) SQL 变量太多,同时使用带有数据框的 SQL
【发布时间】:2018-11-03 12:24:39
【问题描述】:

我有一个如下的熊猫数据框。

       activity         User_Id  \
0  VIEWED MOVIE  158d292ec18a49   
1  VIEWED MOVIE  158d292ec18a49   
2  VIEWED MOVIE  158d292ec18a49   
3  VIEWED MOVIE  158d292ec18a49   
4  VIEWED MOVIE  158e00978d7a6c   

                                         Media_Title Media_Type User_Rating  
0  20th Asian Athletics Championship-2013 Held At...                     NA  
1                                 Tu Majha Saangaati                     NA  
2                                       Home Cooking                     NA  
3                                         Mix Dil Se                     NA  
4                  Value, Virtues, Ethics & Morality                     NA

我正在尝试使用 pandasql 的 sqldf 包编写 SQL 查询,如下所示。

distinct_activity_user = pandasql.sqldf(" select User_Id from pmm_activity", locals())

我得到的错误是:

OperationalError: (sqlite3.OperationalError) too many SQL variables [SQL: 'INSERT INTO pmm_activity (activity, "User_Id", "Media_Title", "Media_Type", "User_Rating") VALUES

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    这可能是与列名中的空格有关的问题。当我尝试使用您提供的数据时,我体验到了这一点。我有一个使用sqlite3 的示例。这是一个可能解决您的问题的示例:

    import sqlite3 as sql
    import pandas as pd
    
    file         = "..../movie.csv"
    df = pd.read_csv(file, sep=";", dtype='unicode' )
    

    这是数据帧的样子

    conn = sql.connect('movie2.db')
    df.to_sql('movie', conn)
    conn = sql.connect('movie2.db')
    Movie = pd.read_sql('SELECT distinct "User_Id  "  FROM movie', conn)
    

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 2023-03-10
      • 2020-04-20
      • 2016-02-20
      • 2015-07-30
      • 2016-08-12
      • 1970-01-01
      • 2022-08-15
      • 2018-10-07
      相关资源
      最近更新 更多