前言:

python连接mysql数据库需要导入mysql,python2使用的是MySQLdb,python3使用的是pymysql

参考文档:Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程

具体安装方案:

一、pycahrm操作

1、安装PyMySQL

2、添加pymysql的解释器

ps:这个安装成功后搜不到

 

二、pip命令

1、pip install PyMySQL

2、在python中导入pymysql,验证是否能够成功引用

ps:上面两种方案任选其一即可

三、实际使用

import pymysql

四、案例理解

准备工作:数据库建张表

# -*- coding: utf-8 -*-
# @Author  : hxy
# @Time    : 2022/1/10 10:51
# @Function:
'''
    数据容器:mysql
    操作数据库的步骤
    1、连接数据库,通过connnect函数链接,生成connection对象
    2、定义我们的游标Cursor,再通过我们游标执行脚本并获取结果
    3、关闭连接

'''

import pymysql

# 1、建立mysql连接
conn = pymysql.connect(host='127.0.0.1',
                       port=3306,
                       user='root',
                       password='root',
                       database='test_cases',
                       charset='utf8')
'''
    常用方法:
    1、cursor()使用当前连接创建并返回游标
    2、commit()提交当前事务
    3、rollback()回滚当前事务
    4、close()关闭当前连接
    
'''
# 2、建立游标
cur = conn.cursor()
'''
    游标操作方法:
    1、execute()执行数据库查询或命令,将结果从数据库返回给客户端
    2、fetchone()获取结果集的下一行
    3、fetchall()获取结果集的所有行
    4、fetchmany()获取结果集的几行
    
'''

# 3、执行脚本
cur.execute('select weaid,success from weather')
print(cur.fetchall())

conn.close()

五、可能会出现的问题以及解决方案

1、通过pip命令安装,安装成功后在setting却查不到

原因:pip安装错了路径,安装到本地环境当中,而使用的项目环境为虚拟环境

2、ERROR: Could not find a version that satisfies the requirement MySQLdb (from versions: none)

ERROR: No matching distribution found for MySQLdb

原因:python2使用的是MySQLdb,python3使用的是pymysql

3、之前使用python2,后改用python3,mysql使用不了

运行pip install mysqlclient

参考文档:python3下import MySQLdb出错问题_tangtang1226的博客-CSDN博客_import mysqldb报错

4、安装成功了,但是代码导包一直爆红

如下图:在已经安装成功的情况下还一直让安装包

原因:import pymysql是小写不是大写

5、AttributeError: 'NoneType' object has no attribute 'encoding'

Traceback (most recent call last):

  File "C:\Users\mihxy\PycharmProjects\key_demo\key_worddemo\test_weather.py", line 18, in <module>

    conn = pymysql.connect(host='127.0.0.1', port=3306,user='root',password='root', database='test_cases', charset='utf-8')

  File "C:\Users\mihxy\PycharmProjects\venv\lib\site-packages\pymysql\connections.py", line 311, in __init__

    self.encoding = charset_by_name(self.charset).encoding

AttributeError: 'NoneType' object has no attribute 'encoding'

原因是:charset='utf8'而不是'utf-8'

6、pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 11001] getaddrinfo failed)")

原因:连接数据库的格式没写对,或者格式内的参数错误

比如:

或者

host='127.0.0.1'写成host='127.0.01',出现这种写错

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐