首页 > 解决方案 > 正确语法的 Mysql 8.0 语法错误检查手册

问题描述

这行代码有什么问题?每当我运行它时,它都会显示语法错误“mysql”检查相应的服务器版本。

import mysql.connector
import builtins
import importlib.util
import os

v=os.getcwd()
loc=""

for i in v:
    if i == "\\":
        loc += "/"
    else:
        loc += i


print(loc)

def crt():
    m=mysql.connector.connect(host="localhost",user="root",passwd="****")
    mc=m.cursor()
    mc.execute("create database if not exists mydb")
crt()

m=mysql.connector.connect(host="localhost",user="root",passwd="****",database="mydb")
mc=m.cursor()

mc.execute("source "+loc+"/mydb.sql;")

当我应用以下代码时,通常适用于 mysql。

use mydb;
source C:\Users\15fri\OneDrive\Desktop\s3ts\mydb.sql

至于前面代码中的 for 循环部分,我将反斜杠转换为正斜杠,因为有时代码中的位置甚至可以与正斜杠一起使用。

标签: pythonmysqlpython-3.x

解决方案


您的问题可能source不是 SQL 命令,它只能在 mySQL CLI 中使用。

尝试读取脚本文件并将其内容作为字符串传递给mc.execute()

为了回应您的评论 Crazy JoN,我不是 Python 程序员,但我在想这样的事情:

sql_script_file = open("source "+loc+"/mydb.sql;",'r')
sql_script = sql_script_file.read()
sql_commands = sql_script.split(";")    # assuming the commands in the script have to be executed one at a time
for cmd in sql_commands:
    mc.execute(cmd)

推荐阅读