爬虫学习之-操作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‘)

原文地址:https://www.cnblogs.com/php-linux/p/9683060.html

时间: 2024-08-29 10:03:51

爬虫学习之-操作mysql的相关文章

python学习之操作mysql

欢迎点击个人博客 http://www.iwangzheng.com/ 刚开始学python,所以很多代码都需要在ipython里尝试一下.今天记录的是最基本的操作mysql数据库. 写数据库连接操作的时候,仿佛回到了当年在前两家公司写asp.net的感觉. 1.首先在mysql数据库里新建个数据库 create database db_02 default charset utf8; create table user (id int auto_increment primary key,us

Python 学习笔记 - 操作MySQL

Python里面操作MySQL可以通过两个方式: pymysql模块 ORM框架的SQLAchemey 本节先学习第一种方式. 学习Python模块之前,首先看看MySQL的基本安装和使用,具体语法可以参考豆子之前的博客http://beanxyz.blog.51cto.com/5570417/1609972 或者官方简介 https://mariadb.com/kb/en/mariadb/basic-sql-statements/ 简单的回顾一下基本环境的搭建: 首先安装Mariadb(我的环

Python学习之==>操作MySQL

一.简介: MySQL为关系型数据库,其他关系型数据库包括Oracle.DB2.Sql Server等等.Python操作MySQL需要使用到pymsyql模块,pip安装即可. 二.操作MySQL步骤 1.连上数据库(IP.端口号.用户名.密码.数据库名) 2.建立游标 3.执行sql 4.获取结果 5.关闭游标 6.关闭连接 1 import pymysql 2 conn = pymysql.connect( 3 host='192.168.1.112', 4 user='test', 5

Mysql学习---Python操作Mysql 1231

安装PyMysql 安装PyMysql:Py3默认自带pip3安装,Py2默认无pip命令 cmd进入PyCharm的安装目录完成安装 pip3 install pymysql 安装完成的位置:E:\PyCharm 2017.2.4\Python3.2.5\Lib\site-packages 故障处理:更新一下默认的Python安装 Py下操作Mysql PyMySQL   - 专门用于操作MySQLpython模块, Py2和Py3同时兼容                    - MySQL

爬虫学习---基础操作--抽屉新热榜自动点赞与豆瓣自动统一短评

爬虫的学习相对来说,比较烦锁,因为网站的反爬规则,经过两天的研究,终于搞定了抽屉新热榜自动点赞与豆瓣自动统一短评(豆瓣登录的验证码目前需要手动输入) 抽屉网的规则问题 示例如下: 1 import requests,re 2 from bs4 import BeautifulSoup 3 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0' 4

【python学习】操作mysql

1.首先你得有一个mysql软件 [[email protected] mysql_test]# mysql -u root -p Enter password:  Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 14 Server version: 5.7.11 MySQL Community Server (GPL) Copyright (c) 2000, 2016, 

本地通过Eclipse链接Hadoop操作Mysql数据库问题小结

前一段时间,在上一篇博文中描述了自己抽时间在构建的完全分布式Hadoop环境过程中遇到的一些问题以及构建成功后,通过Eclipse操作HDFS的时候遇到的一些问题,最近又想进一步学习学习Hadoop操作Mysql数据库的一些知识,在这里网上存在很多分歧,很多人可能会笑话,用那么“笨重”的Hadoop来操作数据库,脑子有问题吧,Hadoop的HDFS优势在于处理分布式文件系统,这种说法没有任何错误,数据库的操作讲究“安全.轻便.快捷”,用Hadoop操作完全是不符合常理啊,那为啥还要学习这个东西呢

[Python] 学习笔记之MySQL数据库操作

1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择跟自己项目相关的数据库.Python DB-API支持的数据库如下所示: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 不同的数据库你需要下载不同的DB API模块,例如

Python数据库操作 Python操作mysql#学习猿地

# python操作mysql mysql数据库可以应用于多种编程语言,包括 PHP,Java,Go,Python 不同编程语言操作mysql,都是使用了mysql提供的API接口. 如果直接操作mysql提供的API相对复杂一些,因为不同的编程语言都有不同的封装好的包或者模块进行数据库的相关操作. 在python中也有很多的包或模块进行mysql数据库的操作,比较知名的包包括 pymysql,mysqldb... ### 安装pymysql pip install pymysql ### py