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)

 

posted @ 2022-03-05 04:09  小能日记  阅读(368)  评论(0编辑  收藏  举报