python把mysql数据库中的数据表写入csv文件

python把mysql数据库的数据表数据写入csv文件中

mysql数据库是一个关联型数据库,数据库中可以存放很多数据表,这次我演示的是把数据库中的数据表读取出来,然后写入csv文件中。

导入模块

import pymysql
from pprint import pprint
import pandas

这次使用到三个模块,pprint模块是为了让打印出来的数据更加工整。

读取数据库

class Mysql_csv(object):
    def __init__(self):
        #读取数据库和建立游标对象
        self.connect = pymysql.connect(host="127.0.0.1",port=3306,user="root",password="数据库密码",database="python-04",charset="utf8")
        self.cursor = self.connect.cursor(cursor=pymysql.cursors.DictCursor)

我是使用面向对象的风格来编写代码的,所以首先要先建立一个类,首先我们先开启数据库,然后在用cursor建立一个游标对象,游标对象是用于后面的对数据的增、删、改、查的。
在使用数据库前,要先下载mysql服务器,然后要建立数据库才能使用数据库,这个可以上网上百度。
host传递的对象是你服务器的ip,也可以填localhost。
port是传递端口号,一般都是3306。
user传递的是用户,如果你的服务器在你的电脑上,一般都是root。
password传递的是你的数据库密码,这行代码我没有填上我的数据密码。
databases传递的是你要使用哪个数据库。
charset是编码格式,一般都是用utf8,记得不要填utf-8。
cursor里面的参数,是把你读取的数据转化为字典类型,这更方便等下写把数据写入csv文件。

读取数据表的数据

    def read(self):
        #读取数据库的所有数据
        data = self.cursor.execute("""select * from goods""")
        field_2 = self.cursor.fetchall()
        # pprint(field_2)
        return field_2

execute(""“select * from goods”""),execute里面的参数是sql语句,这个语句是把goods数据表中的所有数据读取出来,执行完这一句,还要执行这一句field_2 = self.cursor.fetchall(),才能读取所有的数据,最后返回值是field_2

写入csv文件

   def write(self):
        #将数据转化成DataFrame数据格式
        data = pandas.DataFrame(self.read())
        #把id设置成行索引
        data_1 = data.set_index("id",drop=True)
        #写写入数据数据
        pandas.DataFrame.to_csv(data_1,"I:/crack/DATA/mysql.csv",encoding="utf_8_sig")
        print("写入成功")

用DataFrame把数据读取的数据转化成DataFrame二维数组类型,因为行索引在转化的过程中自动生成了,所以要重新为他定义行索引,因为在数据表中的id字段是主键,所以我就把id设为行索引,然后在用drop对象把id列删除。因为内容有中文,所以要用编码utf_8_sig,注意这里如果用utf-8是不能显示中文的,我已经试过来,要用utf_8sig格式才行。

关闭数据库和游标

    def __del__(self):
        self.connect.close()
        self.cursor.close()

这里使用一个del方法,在整个程序运行完了之后再调用这个方法,来关闭数据库和游标

封装

def main():
    write = Mysql_csv()
    write.write()

if __name__ == '__main__':
    main()

源代码

import pymysql
from pprint import pprint
import pandas
class Test_myqsl(object):
    #运行数据库和建立游标对象
    def __init__(self):
        self.connect = pymysql.connect(host="127.0.0.1", port=3306, user="root", password="1505294687", database="python-04",
                                  charset="utf8")
        # 返回一个cursor对象,也就是游标对象
        self.cursor = self.connect.cursor(cursor=pymysql.cursors.DictCursor)
    #关闭数据库和游标对象
    def __del__(self):
        self.connect.close()
        self.cursor.close()
    def write(self):
        #将数据转化成DataFrame数据格式
        data = pandas.DataFrame(self.read())
        #把id设置成行索引
        data_1 = data.set_index("id",drop=True)
        #写写入数据数据
        pandas.DataFrame.to_csv(data_1,"I:/crack/DATA/mysql.csv",encoding="utf_8_sig")
        print("写入成功")
    def read(self):
        #读取数据库的所有数据
        data = self.cursor.execute("""select * from goods""")
        field_2 = self.cursor.fetchall()
        # pprint(field_2)
        return field_2
#封装
def main():
    write = Test_myqsl()
    write.write()

if __name__ == '__main__':
    main()

发布了28 篇原创文章 · 获赞 14 · 访问量 6786

猜你喜欢

转载自blog.csdn.net/weixin_42304193/article/details/89607394