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 中运行的主要内容,如果未能解决你的问题,请参考以下文章