【问题标题】:SQL insert multiple data in a specific column (python)SQL在特定列中插入多个数据(python)
【发布时间】:2016-06-23 20:24:02
【问题描述】:

你好有以下代码:

def create_table():
    c.execute('CREATE TABLE IF NOT EXISTS TEST(Tournament TEXT, MATCH_TIME TEXT, TEAM_1 TEXT, TEAM_2 TEXT)')

create_table()


def data_entry_tournament():
    c.executemany("INSERT INTO TEST(TOURNAMENT) VALUES (?)",
        (Tournament.text.strip()))
    conn.commit()
def data_entry_Time_Event():
    c.executemany("INSERT INTO TEST(MATCH_TIME) VALUES (?)",
        (Time_Event.text.strip()))
    conn.commit()
def data_entry_TEAM_1():
    c.executemany("INSERT INTO TEST(TEAM_1) VALUES (?)",
        (Team_1.text.strip()))
    conn.commit()
def data_entry_TEAM_2():
    c.executemany("INSERT INTO TEST(TEAM_2) VALUES (?)",
        (Team_2.text.strip()))
    conn.commit()

        driver.get(link)

        Tournament = driver.find_element_by_css_selector("h2[class='sport-title']")
        if Tournament.text is not "":
            data_entry_tournament()
        for row in driver.find_elements_by_css_selector("tbody[class='ng-scope']"):
            Time_Event = row.find_elements_by_tag_name("td")[0]
            Team_1 = row.find_elements_by_tag_name("td")[1]
            Team_2 = row.find_elements_by_tag_name("td")[7]
            if Time_Event.text is not "":
                data_entry_Time_Event()
            if Team_1.text is not "":
                data_entry_TEAM_1()
            if Team_1_odds.text is not "":
                data_entry_TEAM_1_ODD()
            if Team_2.text is not "":
                data_entry_TEAM_2()

c.close()
conn.close()

我的问题是 SQL 内部的输出完全错误,每一行只有一个字符,文本是垂直的(并将其拆分为不同行的每一列)。

我想要的是下表,例如:

锦标赛 | MATCH_TIME | TEAM_1 | TEAM_2

2016 年欧洲杯 | 18:00 |西班牙 |意大利

2016 年欧洲杯 | 12:00 |匈牙利 |葡萄牙

等等……

我是python和sql的新手,如果上面的代码真的很糟糕,我很抱歉。

如何解决问题并正确显示所有内容? 有没有比我上面写的更好更快的方法来达到同样的效果?

非常感谢!!!

【问题讨论】:

    标签: python mysql sql sqlite


    【解决方案1】:

    executemany() 对列表中的每个元素执行一次 SQL 语句。

    你没有给它一个列表而是一个字符串,所以它对字符串中的每个元素执行一次 SQL 语句,即每个字符执行一次。

    只需使用execute() 进行单次执行,不要忘记逗号来制作单元素元组:

    c.execute("INSERT INTO TEST(TOURNAMENT) VALUES (?)",
            (Tournament.text.strip(),))
    

    【讨论】:

    • 谢谢!!!!!!你太棒了……现在好多了!文本以正确的方式出现,但仍然不在同一行中(就像倾斜一样,我的意思是每个文本都在正确的列中,但在不同的行中,而不是在同一级别。我该如何解决这个问题?
    • 那将是一个新问题。
    猜你喜欢
    • 2019-12-01
    • 1970-01-01
    • 2013-03-19
    • 2016-08-02
    • 2017-04-27
    • 1970-01-01
    • 2021-10-13
    • 2018-03-04
    • 1970-01-01
    相关资源
    最近更新 更多