sqlite3.OperationalError:表test没有列名

时间:2017-02-02 05:31:46

标签: python mysql pandas sqlite python-3.5

我正在尝试获取数据帧并将其转换为sql。我首先创建表,以设置唯一索引,以允许滚动更新,如果碰巧有两个A.杆随着时间推移重复。虽然我似乎无法动摇这个表列错误,但我不知道为什么。

import pandas as pd
import sqlite3 as sq

conn = sq.connect('test.db')
c = conn.cursor()

def set_table():
    c.execute("""CREATE TABLE IF NOT EXISTS players(
              "#" INTEGER,
              " " REAL,
              "Named" TEXT,
              "B/T" TEXT,
              "Ht" TEXT,
              "Wt" TEXT,
              "DOB" TEXT);""")
    conn.commit()         

def set_index_table():
    c.execute(""" CREATE UNIQUE INDEX index_unique
                  ON players (Named, DOB)""")
    conn.commit()

set_table()
set_index_table()

roster_active = pd.read_html('http://m.yankees.mlb.com/roster',index_col=0)
df = roster_active[0]
df = df.rename(columns={'Name': 'Named'})

df.to_sql('players', conn, if_exists='append')

conn.commit()
conn.close()

sqlite3.OperationalError:表格播放器没有名为

的列

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

所以我不完全确定为什么这不起作用,但我发现我怎么能让它发挥作用。我认为这与数据框索引有关。所以我定义了我想为数据框选择哪些列,哪些有效。

df = df[['Named','B/T', 'Ht','Wt','DOB']]