SQL 查询未在 Python 中运行

Posted

技术标签:

【中文标题】SQL 查询未在 Python 中运行【英文标题】:SQL query not running in Python 【发布时间】:2021-02-15 08:53:36 【问题描述】:

我有以下 Python 代码:

import pandas as pd
from sqlalchemy import create_engine
import mysql.connector

# Give the location of the file
loc = ("C:\\Users\\27826\\Desktop\\11Sixteen\\Models and Reports\\Historical results files\\EPL 1993-94.csv")
df = pd.read_csv(loc)

# Remove empty columns then rows
df = df.dropna(axis=1, how='all')
df = df.dropna(axis=0, how='all')

# Create DataFrame and then import to db (new game results table)
engine = create_engine("mysql://root:xxx@localhost/11sixteen")
df.to_sql('new_game_results', con=engine, if_exists="replace")

# Move from new games results table to game results table
db = mysql.connector.connect(host="localhost",
                             user="root",
                             passwd="xxx",
                             database="11sixteen")
my_cursor = db.cursor()
my_cursor.execute("INSERT INTO 11sixteen.game_results "
                  "SELECT * FROM 11sixteen.new_game_results WHERE "
                        "NOT EXISTS (SELECT date, HomeTeam "
                                    "FROM 11sixteen.game_results WHERE "
                                            "11sixteen.game_results.date = 11sixteen.new_game_results.date AND "
                                            "11sixteen.game_results.HomeTeam = 11sixteen.new_game_results.HomeTeam)")

print("complete")

基本上,目标是我将数据从几个 excel 文件复制到一个 SQL 表(一次一个),然后将其从那里传输到更完整的表,所有数据将在该表中聚合(希望没有重复)

除了下面的 SQL 查询之外,一切都 100% 工作:

INSERT INTO 11sixteen.game_results 
SELECT * FROM 11sixteen.new_game_results 
WHERE NOT EXISTS (  SELECT date, HomeTeam 
                    FROM 11sixteen.game_results WHERE 
                                11sixteen.game_results.date = 11sixteen.new_game_results.date AND 
                                11sixteen.game_results.HomeTeam = 11sixteen.new_game_results.HomeTeam)

如果我在 MySQL Workbench 上运行相同的查询,它会完美运行。任何想法为什么我不能让 Python 按预期执行查询?

【问题讨论】:

什么不起作用?你有什么输出吗?也许是一条错误消息?如果我们不知道哪里出了问题,我们将无能为力。 @Steven 完全没有错误 - 创建的第一个表是 100%,但它只是没有将数据复制到更完整的表 - 代码在末尾作为“完整”打印行完成代码执行 那么,你只需要添加一个提交。 卫生署!是的 - 我是个笨蛋 - 谢谢! 那么你大概可以接受答案了.... 【参考方案1】:

在最后添加一个提交。

db.commit()

【讨论】:

以上是关于SQL 查询未在 Python 中运行的主要内容,如果未能解决你的问题,请参考以下文章

多个查询未在 FMDB 中运行

未在 H2 数据库上执行的 Sql 查询

多个 SQL 查询未在 Cakephp 中执行

查询未在 sql 中使用 'Not IN'

Sql server 未在查询中使用嵌套 case 语句更新记录

在 SQL 中检测到重叠,未在选择中使用子查询且未将重复记录添加到结果集中