Python 连接Mysql数据库执行语句操作
总共用时: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引入的是这个文件而不是模块文件
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)