Python3 操作mysql数据库
python关于mysql的API--pymysql模块
pymsql是Python中操作MySQL的模块,其使用方法和py2的MySQLdb几乎相同。
模块安装
pip install pymysql
执行sql语句
#导入pymysql模块
import pymysql # 连接数据库
connect = pymysql.connect(host = '10.135.30.141',port = 3306,user = 'root',passwd = 'root@123',db = 'test',charset = 'utf8')
# 定义游标
cursor = connect.cursor()
#更改获取数据结果的数据类型,默认是元组,可以改为字典等:
# cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
# 执行SQL,count 是执行sql影响的行数
count = cursor.execute("select * from t1")
# 返回1条
#cursor.fetchone()
# 返回多条
# cursor.fetchmany()
# 返回所有行数
results = cursor.fetchall()
print(results)
#scroll移动光标
#cursor.scroll(-1,mode='relative') # 相对当前位置移动
#cursor.scroll(2,mode='absolute') # 相对绝对位置移动 # 提交sql
connect.commit()
# 关闭游标
cursor.close()
#关闭连接
connect.close()
导出数据到excel表格
# __Desc__ = 从数据库中导出数据到excel数据表中
# __author__ yuxiaohao import pymysql
from openpyxl import Workbook
from openpyxl.writer.excel import ExcelWriter
from openpyxl.cell.cell import get_column_letter
import datetime,time,logging # 开始日期
if datetime.date.today().month - 1 == 0:
start_date = datetime.date(datetime.date.today().year -1,datetime.date.today().month - 1 or 12,1)
else:
start_date = datetime.date(datetime.date.today().year, datetime.date.today().month - 1, 1)
# 结束日期
stop_date = datetime.date(datetime.date.today().year,datetime.date.today().month ,1)
# 当天日期
Today = time.strftime('%Y-%m-%d')
# 表格输出路径
DirName = 'E:/'
# 表格名字
FileName = '%sshop-invoices-exp-%s.xlsx' % (DirName, Today) # 需要执行的SQL
SQL="" # SQL转换成小写
SQL=SQL.lower() # 定义日志
logging.basicConfig(filename='%saccess.log' %DirName,
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=10) class MYSQL:
def __init__(self):
pass def __del__(self):
self._connect.commit()
self._cursor.close()
self._connect.close() def connectDB(self):
"""
连接数据库
:return:
"""
try:
self._connect = pymysql.Connect(
host='',
port=3306,
user='',
passwd='',
db='',
charset='utf8'
) return 0
except:
return -1 def export(self, table_name, output_path):
self._cursor = self._connect.cursor()
count = self._cursor.execute(SQL)
logging.info('返回%s行数据' %count)
# 搜取所有结果
results = self._cursor.fetchall()
# 获取字段名
fields_complex = self._cursor.description
# 字段名加入li 列表中
fields = []
for i in range(len(fields_complex)):
fields.append(fields_complex[i][0])
# 创建表格
wb = Workbook()
ws = wb.active
ws = wb.worksheets[0]
# 字段名添加到表格
ws.append(fields)
# 数据添加到表格
for ret in results:
ws.append(ret)
#保存
wb.save(output_path) if __name__ == '__main__':
mysql = MYSQL()
flag = mysql.connectDB()
if flag == -1:
logging.info('数据库连接失败')
else:
logging.info('数据库连接成功')
mysql.export('t1', '%s' % FileName)
mysql.__del__()
if FileName:
logging.info('数据导出成功!')
else:
logging.info('数据导出失败!')
Python3 操作mysql数据库的更多相关文章
- python3操作MySQL数据库
安装PyMySQL 下载地址:https://pypi.python.org/pypi/PyMySQL 1.把操作Mysql数据库封装成类,数据库和表先建好 import pymysql.cursor ...
- (接口自动化)Python3操作MySQL数据库
基础语法: import pymysql #导入模块 conn = pymysql.connect(host='localhost',user='root', passwd='123456', db= ...
- python3操作mysql数据库增删改查
#!/usr/bin/python3 import pymysql import types db=pymysql.connect("localhost","root&q ...
- python3操作mysql数据库表01(基本操作)
#!/usr/bin/env python# -*- coding:UTF-8 -*- import requestsfrom bs4 import BeautifulSoupfrom bs4 imp ...
- python3操作MySQL数据库,一次插入多条记录的方法
这里提供一个思路,使用字符串拼接的方法,将sql语句拼接出来,然后去执行: l = ["] s = '-' print(s.join(l))
- python3操作mysql数据库表01(封装查询单条、多条数据)
#!/usr/bin/env python# -*- coding:UTF-8 -*- import pymysql# import os'''封装查询单条.多条数据'''# os.environ[' ...
- python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy
内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...
- python3操作mysql教程
一.下载\安装\配置 1. python3 Python3下载网址:http://www.python.org/getit/ 当前最新版本是python3.2,下载地址是 http://www.pyt ...
- python接口自动化(三十八)-python操作mysql数据库(详解)
简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...
随机推荐
- java之 Mybatis框架
1.三层框架: 表现层: 是用于展示数据 业务层: 是处理业务需求 持久层: 是和数据库交互 注:MyBatis在持久层 2.JDBC操作数据库 public static void main(Str ...
- [ASP.NET] 数据绑定以及Container.DataItem的具体分析 [转]
灵活的运用数据绑定操作 绑定到简单属性:<%#UserName%> 绑定到集合:<asp:ListBox id="ListBox1" ...
- Go语言中byte类型和rune类型(五)
本篇内容本来准备在上一篇写的,想了想还是拆开写. go语言中字符串需要使用用双引号,而单引号用来表示单个的字符,字符也是组成字符串的元素.go语言的字符有两种: uint8类型,或者叫 byte 型, ...
- 公共子序列_NOI导刊2011提高(03)题
题面 这道题有点坑人啊~ 首先,它需要取模,模数是100000000:(窝在这里死了好久好久,看了别人的代码才发现这一点) 然后我发现题解中没有序列自动机的方法,于是就来一发 首先,虽然序列自动机在定 ...
- Quatrz + Spring
实例工程结构: 配置: pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...
- document与Object的关系
window与Objet 1. window.__proto__ === Window.prototype 2. window.__proto__.__proto__ === 窗口属性(WindowP ...
- Linux的环境变量.bash_profile .bashrc profile文件
Shell变量有局部变量.环境变量之分.局部变量就是指在某个Shell中生效的变量,只在此次登录中有效.环境变量通常又称“全局变量”,虽然在Shell中变量默认就是全局的,但是为了让子Shall继承当 ...
- 0-1-Tree CodeForces - 1156D (并查集)
大意: 给定树, 边权为黑或白, 求所有有向路径条数, 满足每走过一条黑边后不会走白边. 这题比赛的时候想了个假算法, 还没发现..... 显然所求的路径要么全黑, 要么全白, 要么先全白后全黑, 所 ...
- eval解惑
let a = 1, b = 2, c = 3; let arr = [a, b, c]; function test(p1, p2, p3) { console.log(`${p1} ~ ${p2} ...
- Python基础——函数进阶
等待更新…………………… 后面再写