爬虫学习之-操作mysql
在操作数据库的时候,python2中一般使用mysqldb,但在python3中已经不在支持mysqldb了,我们可以用pymysql和mysql.connector。本文的所有操作都是在python3的pymysql下完成的。
一、基本操作
(1) 查询
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='test')
cur = conn.cursor()
# 查询
sql = "select * from info"
reCount = cur.execute(sql) # 返回受影响的行数
print(reCount)
data = cur.fetchall() # 返回数据,返回的是tuple类型
print(data)
"""
((1, 'mj', 'tokyo'), (2, 'alex', 'newyork'), (3, 'tommy', 'beijing'))
"""
cur.close()
conn.close()
(2) 修改
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='test')
cur = conn.cursor()
# 插入数据
sql2 = "insert into info(NAME,address ) VALUES(%s,%s)" # sql语句,%s是占位符(%s是唯一的,不论什么数据类型都使用%s)用来防止sql注入
params = ('eric', 'wuhan') # 参数
reCount = cur.execute(sql2, params)
# 批量插入
li = [('a1', 'b1'), ('a2', 'b2')]
sql3 = 'insert into info(NAME ,address) VALUES (%s,%s)'
reCount = cur.executemany(sql3, li)
conn.commit() # 提交,执行多条命令只需要commit一次就行了
cur.close()
conn.close()
(3) 返回dict类型的数据
import pymysql
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='test')
# cur = conn.cursor()
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) #创建cursor的时候,指定1其返回的cursor类型为dict
# 查询
sql = "select * from info"
reCount = cur.execute(sql) # 返回受影响的行数
print(reCount)
data = cur.fetchall() # 返回数据,返回的是tuple类型
print(data)
cur.close()
conn.close()
"""
[{'address': 'tokyo', 'name': 'mj', 'id': 1}, {'address': 'newyork', 'name': 'alex', 'id': 2}, {'address': 'beijing', 'name': 'tommy', 'id': 3}]
"""
(4)获取自增id
通过cur.lastrowid来获取自增id
# 插入数据
sql = "insert into info(NAME,address ) VALUES(%s,%s)"
params = ('eric', '/usr/bin/a.txt')
reCount = cur.execute(sql, params)
conn.commit()
new_id = cur.lastrowid #获取自增id,提交完之后才能取到值
print(new_id)
二、cursor定位
使用fechone来逐条获取数据
data = cur.fetchone()
print(data)
data = cur.fetchone()
print(data)
data = cur.fetchone()
print(data)
"""
(1, 'mj', 'tokyo')
(2, 'alex', 'newyork')
(3, 'tommy', 'beijing')
"""
(1) 绝对定位
cur.scroll(0,mode='absolute')
data = cur.fetchone()
print(data)
cur.scroll(0,mode='absolute')
data = cur.fetchone()
print(data)
data = cur.fetchone()
print(data)
"""
(1, 'mj', 'tokyo')
(1, 'mj', 'tokyo')
(2, 'alex', 'newyork')
"""
(2) 相对定位
cur.scroll(-1,mode='relative')
data = cur.fetchone()
print(data)
data = cur.fetchone()
print(data)
cur.scroll(-1,mode='relative')
data = cur.fetchone()
print(data)
"""
(1, 'mj', 'tokyo')
(2, 'alex', 'newyork')
(2, 'alex', 'newyork')
"""
三、解耦
这里简单实现一个用户登录的功能,以便对整个业务结构有一个整体的认识。

项目目录结构

index.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from model.admin import Admin
def main():
usr = input("username:")
pwd = input("password:")
admin = Admin()
result = admin.CheckValidate(usr, pwd)
if not result: # 一般会把简单的逻辑放在上面,复杂的逻辑放下面
print("登录失败!")
else:
print("登陆成功!进入后台管理界面..")
if __name__ == "__main__":
main()
admin.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
from utility.sql_helper import MySqlHelper
class Admin():
def __init__(self):
self.__helper = MySqlHelper()
def CheckValidate(self,username,password):
sql = "select * from admin where username=%s and password=%s"
params=(username,password)
return self.__helper.getOne(sql,params)
sql_helper.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import pymysql
import conf
class MySqlHelper(object):
def __init__(self):
self.__conn_dict = conf.conn_dict # 把数据库连接信心提取到conf中
def getDict(self, sql, params):
conn = pymysql.connect(**self.__conn_dict)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql, params)
data = cur.fetchall()
cur.close()
conn.close()
return data
def getOne(self, sql, params):
conn = pymysql.connect(**self.__conn_dict) # 加**后表示传入的是字典里的数据,否则报错
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql, params)
data = cur.fetchone()
cur.close()
conn.close()
return data
conf.py
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
conn_dict = dict(host='127.0.0.1', user='root', passwd='root', db='test')
爬虫学习之-操作mysql的更多相关文章
- python学习之操作mysql
欢迎点击个人博客 http://www.iwangzheng.com/ 刚开始学python,所以很多代码都需要在ipython里尝试一下.今天记录的是最基本的操作mysql数据库. 写数据库连接操作 ...
- Mysql学习---Python操作Mysql 1231
安装PyMysql 安装PyMysql:Py3默认自带pip3安装,Py2默认无pip命令 cmd进入PyCharm的安装目录完成安装 pip3 install pymysql 安装完成的位置:E:\ ...
- Python学习之==>操作MySQL
一.简介: MySQL为关系型数据库,其他关系型数据库包括Oracle.DB2.Sql Server等等.Python操作MySQL需要使用到pymsyql模块,pip安装即可. 二.操作MySQL步 ...
- Python基础学习六 操作MySQL
python操作数据库,需要先安装模块 1.下载MySQL.Redis模块 2.解压后,在当前目录执行 python setup.py install 3.或是pycharm直接选择安装 import ...
- 本地通过Eclipse链接Hadoop操作Mysql数据库问题小结
前一段时间,在上一篇博文中描述了自己抽时间在构建的完全分布式Hadoop环境过程中遇到的一些问题以及构建成功后,通过Eclipse操作HDFS的时候遇到的一些问题,最近又想进一步学习学习Hadoop操 ...
- [Python] 学习笔记之MySQL数据库操作
1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...
- python学习笔记-(十六)python操作mysql
一. mysql安装 1. windows下安装mysql 1.1. 下载源: http://dev.mysql.com/downloads/installer/,请认准对应版本 Windows (x ...
- 在spark中操作mysql数据 ---- spark学习之七
使用spark的 DataFrame 来操作mysql数据. DataFrame是比RDD更高一个级别的抽象,可以应用SQL语句进行操作,详细参考: https://spark.apache.org/ ...
- Java框架spring Boot学习笔记(五):Spring Boot操作MySQL数据库增、删、改、查
在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...
随机推荐
- 网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?
本文由 网易云发布. 5月19日,LiveVideoStack携手网易云易盾,共同打造了“娱乐多媒体开发应用实践”专题,帮助开发者和泛娱乐平台运营人员,提升技术能力,突破难点,拓展思路与视野. 在专 ...
- 4.26-python学习笔记(变量及命名、字符串、格式化字符串print,format,%...)
参考书目:<Learn Python The Hard Way> cars=100 print('there are ',cars,'cars available.') ##练习5 更多变 ...
- windows系统下系统变量path误删恢复方法
每台计算机安装程序不同,环境变量path会有不同,若误删了环境变量path,可以如下完美解决. Win+R 输入regedit打开注册表(开始-运行里输入regedit) 找到 HKEY_LOC ...
- cygwin环境搭建
可以在家目录下查看.bash_profile里的PATH.如果是:PATH=$PATH:$HOME/bin则需要添加成如下: PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/ ...
- 我遇到的有关git的问题及解决方法总结
有关git的问题 ** 1.在github上创建项目 2.使用git clone https://github.com/xxxxxxx/xxxxx.git克隆到本地 3.编辑项目 4.git add ...
- 20155213 2016-2017-2 《Java程序设计》第一周学习总结
20155213 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 了解JVM.JRE与JDK,并下载.安装.测试JDK JVM JVM是Java Virtua ...
- 20155218 2016-2017-2《Java程序设计》课程总结
20155218 2016-2017-2<Java程序设计>课程总结 目录 每周作业链接汇总 实验报告链接汇总 博客中的经验与收获 代码托管 课堂项目实践 课程收获与不足 给开学初的你和学 ...
- Hibernate5使用注解方式(转)
用Hibernate5使用映射文件时存在一个问题没有解决,在映射文件中配置了student_sequence,但找不到映射文件自增长的序列的sequence(Oracle)数据库. 输出的是 Hibe ...
- C、C++字符操作归总
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...
- 从零开始的Python学习Episode 12——迭代器&生成器
生成器 列表生成式 用于快速地生成一个列表 a = [x*x for x in range(1,9)] print(a) #输出[1, 4, 9, 16, 25, 36, 49, 64] 也可以用于生 ...