python - 正确语法的 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 循环部分,我将反斜杠转换为正斜杠,因为有时代码中的位置甚至可以与正斜杠一起使用。
解决方案
您的问题可能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)
推荐阅读
- python - 如何在 Jupyter 笔记本中绘制素数
- asp.net - 如何设置 github 操作以使用 nunit 为 asp.net 应用程序运行单元测试?
- dependencies - 是否可以安装带有由 asdf 管理的依赖项的 Homebrew 软件包?
- javascript - 你能帮我编写一个新函数来计算循环播放的数量吗?
- algorithm - 与异常值匹配的最小成本
- firebase - 对于只对使用 Firestore 感兴趣的公司,gcloud 和 Firebase CLI 有什么区别
- java - 如何在 java eclipse 中向 JPanel 添加背景(URL)
- python - 基于投掷有偏硬币 100 次的随机游走模拟
- java - 如何在安卓游戏中进行角色选择?
- javascript - 使用数组中的地图进行碰撞