python-pymysql使用

今天领导提了一个需求,使用py将数据库中的文件提取出并制成csv文件

首先查了一下资料需要两个模块:csv模块、pymysql模块。

import pymysql
import csv

使用def函数将从数据库提取数据写在一起(游标功能是数据库中一个非常重要的概念)

  首先,使用pymysql连接上mysql数据库,得到一个数据库对象。
  然后,我们必须要开启数据库中的游标功能,得到一个游标对象。
  接着,使用游标对象中的execute()方法,去执行某个SQL语句,系统会根据你的SQL语句,找到这些匹配行,给你存储起来,而不是一次性的打印到频幕上。当你什么时候需要这个结果中的数据的时候,你就去获取它。
  最后,就是获取结果集中的数据了,这里有两种方法获取结果集中的数据。一个是fetchone(),该方法一次获取一条记录,每一条记录是一个元组形式的数据,每获取一条记录游标会往前移动一格,等待获取下一条记录;一个是fetchall()方法,能够一次性的获取所有的数据,该方法返回的是一个元组列表。
  当完成所有操作后,记得断开数据库的连接,释放资源。


def from_mysql_get_all_info():
conn = pymysql.connect( #连接数据库,创建一个数据库对象
host='127.0.0.1',
port=3306,
user='root',
passwd='root',
db='mysql',
charset='utf8')

cursor = conn.cursor() #开启游标功能,创建游标对象
sql = 'select * from user' #sql语句
cursor.execute(sql.encode('utf-8')) #使用execute()方法,执行SQL语句
data = cursor.fetchall() #cursor.fetchall()一次性获取所有数据 cursor.fetchone()一次性获取一个数据
for x in data:
print(x)
conn.close() #关闭数据库,释放资源
return data
#print(from_mysql_get_all_info())

从数据库中提取的资料写入一个csv文件中并保存在本地

文件操作的基础模式有三种(默认的操作模式为r模式):

  • r模式为read
  • w模式为write
  • a模式为append

文件读写内容的格式有两种(默认的读写内容的模式为b模式):

  • t模式为text
  • b模式为bytes

需要注意的是:t、b这两种模式均不能单独使用,都需要与r/w/a之一连用。

def write_csv():
    data = from_mysql_get_all_info()
    filename = 'corpus.csv'  # 文件名和路径
    with open(filename, mode='w', encoding='utf-8') as f:
        write = csv.writer(f, dialect='excel')
        for item in data:
            write.writerow(item)
write_csv()

结果:在代码保存的文件夹中生成corpus.csv文件。里面包含数据库中的数据

 

posted @ 2020-11-05 14:10  阿鑫的哥哥  阅读(169)  评论(0)    收藏  举报