Python操作Mysql使用简介

本文介绍如何使用Python连接MySQL数据库,包括异常处理、数据查询、插入及导出到CSV的方法。并演示了如何利用pandas进行数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
Mysql是现在主流的数据库,除了一般的CSV导入到Mysql,Mysql导出到csv,还应该有Mysql导出到python,本篇文章就是一些python操作Mysql的简单操作。

安装必要模块
在python中,我个人比较常用MySQLdb这个模块,但是因为某些原因,用pip3和pycharm自带的安装都失败,于是,我个人建议在:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
找到自己合适的版本进行手动安装。

使用python连接数据库

import MySQLdb
conn = MySQLdb.connect(
    host = '127.0.0.1',#本地地址
    user = 'root',#一般默认用户名
    passwd = '123456',#本地数据库登录密码
    db = 'data',#数据库名称
    port = 3306,#安装mysql默认的端口号
    charset = 'utf8'#设置数据库统一编码
)

如果没有报错,那么恭喜你安装成功了。

创建游标

cursor = conn.cursor()

游标就是相当于一个缓冲区,用来暂存结果。

获取数据
这里我们使用select语句获取数据
这里写图片描述

cursor = conn.cursor()
cursor.execute('SELECT * FROM `grade`;')
data1 = cursor.fetchone()#取一条数据
print(data1)

(‘90’, ‘100’, ‘A’)
如图所示,我们取出来的数据是元组的形式。
当我们操作结束的时候,应该养成把数据库关闭的习惯。

conn.close()

异常处理
当我们在操作的过程中,会遇到出现异常的情况,我们希望能像在Mysql中操作一样出现异常提示,所以我们需要加入异常处理模块。

try:
    conn = MySQLdb.connect(
        host = '127.0.0.1',
        user = 'root',
        passwd = '12345',
        db = 'data',
        port = 3306,
        charset = 'utf8'
    )
except MySQLdb.Error as e:
    print('Error:%s' % e)

这里我把登录密码改成“12345”,于是便报错了:
Error:(1045, “Access denied for user ‘root’@’localhost’ (using password: YES)”)
把以上代码整理一下:

import MySQLdb
try:
    conn = MySQLdb.connect(
        host = '127.0.0.1',#本地地址
        user = 'root',#一般默认用户名
        passwd = '123456',#本地数据库登录密码
        db = 'data',#数据库名称
        port = 3306,#安装mysql默认的端口号
        charset = 'utf8'#设置数据库统一编码
    )
    cursor = conn.cursor()
    cursor.execute('SELECT * FROM `grade`;')
    data1 = cursor.fetchall()  # 取一条数据
    print(data1)
    conn.close()
except MySQLdb.Error as e:
  print('Error:%s' % e)

插入数据

cursor.execute('insert into grade (LOW , UPP , RANK) VALUE     (89,90, "A" )  ')
conn.commit()
conn.close()

这里需要注意的是要有conn.commit()语句,所增加的内容才会提交到数据库。

接下来的是数据导入到pandas,为数据分析做准备。
导入表中所有数据,并查看前5行

import MySQLdb
import pandas as pd

try:
    conn = MySQLdb.connect(
        host = '127.0.0.1',#本地地址
        user = 'root',#一般默认用户名
        passwd = '123456',#本地数据库登录密码
        db = 'data',#数据库名称
        port = 3306,#安装mysql默认的端口号
        charset = 'utf8'#设置数据库统一编码
                            )
    sql = 'select * from grade'
    df = pd.read_sql(sql,conn)
    print(df.head())
except MySQLdb.Error as e:
  print('Error:%s' % e)
  LOW  UPP RANK
0  90  100    A
1  80   89    B
2  70   79    C
3  60   69    D
4   0   59    E

将数据导出到CSV文件

df.to_csv('F:\\python\\111.csv', encoding = 'utf-8', index = False)

这里写图片描述

把数据(DataFrame格式)导入到数据库

import MySQLdb
import pandas as pd
from sqlalchemy import create_engine

host = '127.0.0.1'
port = 3306
db = 'data'
user = 'root'
password = '123456'

engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db))

try:
    df = pd.DataFrame([[1,'x'],[2,'y']],columns=list('ab'))
    df.to_sql('test1',con=engine,if_exists='replace',index=False)
except Exception as e:
    print(e)

这里写图片描述
可以看到,已经导入到数据库了。
相关参考资料:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_sql.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值