main.py 主程序入口
""" 写一个py,功能是连接本地的数据库,同时你可以执行两个操作分别是,执行存储过程,执行单条select语句。第一个操作,执行存储过程,用户输入存储过程的名字,mysql运行并把数据返回,第二个用户输入单条select语句,mysql运行并把数据返回 """ import sql def Main(): while 1: print('选择模式| 1 执行存储过程 | 2 执行SQL语句') mode = input() if mode == '1': print('输入存储过程名字') procedure = input() result = sql.MyRunSqlProcedure(procedure) print('执行结束') elif mode == '2': print('输入sql语句') command = input() result = sql.Execute(command) sql.Show(result) print('执行结束') else: break print('程序退出') Main()
sql.py 简单封装mysql.connector模块
# pip install mysql-connector -i https://pypi.tuna.tsinghua.edu.cn/simple # 从清华镜像下载 import mysql.connector db = mysql.connector.connect( host="localhost", user="root", passwd="sql2008", database="mysales", auth_plugin='mysql_native_password' ) cursor = db.cursor() def Execute(sql): cursor.execute(sql) return cursor.fetchall() def MyRunSqlProcedure(procedure): cursor.callproc(procedure, args=()) for result in cursor.stored_results(): print(result.fetchall()) def Show(result): for x in result: print(x)
总共用时:2小时
踩过的几个坑:
mysql 连接:
提示SHA加密错误无法连接
在连接里添加参数 auth_plugin='mysql_native_password'
mysql数据库里执行如下代码
flush privileges;
alter user 'root'@'%' identified with mysql_native_password by 'sql2008';
select host,user,plugin from mysql.user;
运行存储过程:
使用execute方法不能正确运行存储过程
cursor.callproc(procedure, args=()) for result in cursor.stored_results(): print(result.fetchall())
详细见官方api
模块下载:
模块下载速度很慢
pip install mysql-connector -i https://pypi.tuna.tsinghua.edu.cn/simple
# 用清华的镜像下载速度会很快
提示模块找不到:
import mysql.connector 一直报错无法找到模块,无论重装了多少次
刚开始可能是模块没有安装成功,重新安装一下mysql-connector
如果还是不行,看看当前目录下是不是有mysql.py文件,如果有,修改掉这个文件的名字,因为import引入的是这个文件而不是模块文件