Python连接Mysql读写数据的简单办法。

这里使用的是mysqldb这个库,也只是记一下我对这个库的学习感受。
一般我们进去mysql的办法都是通过cmd中进入,或者使用图形管理器如Navicat for MySQL管理数据,但是在mysql中直接进行数据分析是一件很痛苦的是,因为它缺少有效的模型参数。
在这里插入图片描述
例如在这个数据集合中,查询cost大于600且invoice_number是920开头的供应商是有哪些,我们用select语句可以很简单的查询。

select supplierr_name from suppliers where cost>600 and invoice_number like '920%';

在这里插入图片描述
很容易查到是z供应商的货物,但是关系型数据库的所有数据并不存储在一张表上,因此很多数据间的联系在观感上并不直观。

import csv
import MySQLdb

output_file = ‘文件路径’

# 连接数据库
con = MySQLdb.connect(host='localhost', port=3306, db='databases')
c = con.cursor()#mysql游标

# 创建一个文件编写器对象并写入标题行
filewriter = csv.writer(open(output_file, 'w', newline=''), delimiter=',')
header = ['Supplier Name','Invoice Number','Part Number','Cost','Purchase Date']
filewriter.writerow(header)

#写入CSV文件
c.execute("""SELECT * 
		FROM Suppliers 
		WHERE Cost > 700.0;""")#execute是Mysqlbd库中一个执行函数,使用'''mysql语句'''格式来执行。
rows = c.fetchall()#抓取查询语句的数据
for row in rows:#c定义为游标,而rows是由c.fetchall抓出因此可以迭代输出。
	filewriter.writerow(row)

上面的代码是从数据库中抓取数据写入csv格式中,然后我们可以将数据从csv中在读入pandas或者np中。

下面代码是使用python插入数据给Mysql数据库所用的。

import csv
import MySQLdb
import sys
from datetime import datetime, date

# Path to and name of a CSV input file
input_file = sys.argv[1]

# 连接数据库
con = MySQLdb.connect(host='localhost', port=3306, db='databases', user='root', passwd='pass')
c = con.cursor()

# 读取csv
# 插入数据到mysql表中
file_reader = csv.reader(open(input_file, 'r'), delimiter=',')
header = next(file_reader)#将列标单独读出为header
for row in file_reader:
	data = []
	for column_index in range(len(header)):#两个for语句对整个文件的所有格子进行扫描
		if column_index < 4:
#if语句为对csv文件中的时间序列的格式化,格式化为mysql可接受的格式年-月-日,使用基础的datetime库
			data.append(str(row[column_index]).lstrip('$')\
			.replace(',', '').strip())
		else:
			a_date = datetime.date(datetime.strptime(\
			str(row[column_index]), '%m/%d/%Y'))
			# %Y: year is 2016; %y: year is 15
			a_date = a_date.strftime('%Y-%m-%d')
			data.append(a_date)
	print(data)
	c.execute("""INSERT INTO Suppliers VALUES (%s, %s, %s, %s, %s, %s,%s);""", data)
con.commit()


个人使用mysqldb这个库的感受并不好,例如在对上时间序列处理上就不如pandas,当然也可以直接将数据读入pandas。这里是提个不同的思路。

另一方法:
首先安装SQLAlchemy,直接在cmd命令窗口输入pip install sqlalchemy 就可以了。
具体使用方法参照下面这两链接就可以了 我就不赘述了。
sqlalchemy库学习
pandas_mysql操作

猜你喜欢

转载自blog.csdn.net/lisenby/article/details/107862663