入门Python爬虫Day5

python爬虫

此文章大致需要观看十分钟


Python作为现阶段最流行的语言,对于网络的爬取和海量数据的分析,python更胜一筹。

Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。在这里我主要介绍一下python操作MySQL、执行SQL语句、获取结果集、遍历结果集、取得谋个字段、获取表字段名、将图片插入数据库、执行事务等各种代码示例和详细介绍。


1、初识数据库

# 连接数据库
from sqlalchemy import create_engine
engine = create_engine(
    "mysql+pymysql://root:1990@localhost:3306/test?charset=utf8",
    echo=True)

# 创建数据表方法一
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class mytable(Base):
    # 表名
    __tablename__ = 'mytable'
    # 字段,属性
    id = Column(Integer, primary_key=True)
    name = Column(String(50), unique=True)
    age = Column(Integer)
    birth = Column(DateTime)
    class_name = Column(String(50))

Base.metadata.create_all(engine)

# 创建数据表方法二
from sqlalchemy import Column, MetaData, ForeignKey, Table
from sqlalchemy.dialects.mysql import (INTEGER, CHAR)
meta = MetaData()
myclass = Table('myclass', meta,
                Column('id', INTEGER, primary_key=True),
                Column('name', CHAR(50), ForeignKey(mytable.name)),
                Column('class_name', CHAR(50))
                )
myclass.create(bind=engine)

# 删除数据表
#myclass.drop(bind=engine)
#Base.metadata.drop_all(engine)
###########
get_data = session.query(mytable).filter_by(id=1).first()
get_data.class_name = '三年级三班'
session.commit()
session.close()

# 查询myclass全部数据
get_data = session.query(myclass).all()
for i in get_data:
    print('我的名字是:' + i.name)
    print('我的班级是:' + i.class_name)
session.close()
#################################

get_data = session.query(myclass.name, myclass.class_name).all()
for i in get_data:
    print('我的名字是:' + i.name)
    print('我的班级是:' + i.class_name)
session.close()
#################################

# 根据条件查询某条数据
# 筛选方法一:
# get_data = session.query(myclass).filter(myclass.id==1).all()
# 筛选方法二:
get_data = session.query(myclass).filter_by(id=1).all()
print('数据类型是:' + str(type(get_data)))
for i in get_data:
    print('我的名字是:' + i.name)
    print('我的班级是:' + i.class_name)
#################################

get_data = session.query(myclass).filter_by(id=1).first()
print('数据类型是:' + str(type(get_data)))
print('我的名字是:' + get_data.name)
print('我的班级是:' + get_data.class_name)
#################################

get_data = session.query(mytable).filter(mytable.id >= 2, 
             mytable.class_name == '三年级二班').first()
print('数据类型是:' + str(type(get_data)))
print('我的名字是:' + get_data.name)
print('我的班级是:' + get_data.class_name)
#################################

# 内连接
get_data = session.query(mytable).join(myclass).filter(mytable.class_name == '三年级二班').all()
print('数据类型是:' + str(type(get_data)))
for i in get_data:
    print('我的名字是:' + i.name)
    print('我的班级是:' + i.class_name)
# 外连接
get_data = session.query(mytable).outerjoin(
             myclass).filter(mytable.class_name == '三年级二班').all()
#################################

sql = 'select * from mytable '
session.execute(sql)
# 如果涉及更新,添加数据,需要session.commit()
session.commit()

2、连接本地数据库

import pymongo
# 创建对象,连接本地数据库。
# 方法一:
client = pymongo.MongoClient()
# 方法二:
client = pymongo.MongoClient('localhost', 27017)
# 方法三:
client = MongoClient('mongodb://localhost:27017/')
# 连接DB数据库
db = client['DB']
# 连接集合user,集合类似关系数据库的数据表
# 如果集合不存在,会新建集合user
user_collection = db.user
# 设置文档格式(文档即我们常说的数据)

3、用户验证

import pymongo
# 用户验证方法一
client = pymongo.MongoClient()
db_auth = client.admin
db_auth.authenticate(username, password)
# 连接DB数据库
db = client['DB']
# 用户验证方法二
client = MongoClient('mongodb://username:password@localhost:27017/')
# 连接DB数据库
db = client['DB']

4、数据库读写

import pymongo
import datetime
import re
# 创建对象
client = pymongo.MongoClient()
# 连接DB数据库
db = client['DB']
# 连接集合user,集合类似关系数据库的数据表
# 如果集合不存在,会新建集合user
user_collection = db.user
# 设置文档格式(文档即我们常说的数据)
user_info = {
	    "_id": 100,
	    "author": "小黄",
         "text": "Python爬虫开发",
         "tags": ["mongodb", "python", "pymongo"],
         "date": datetime.datetime.utcnow()}

# 使用insert_one单条添加文档,inserted_id获取写入后id
# 添加文档时,如果文档尚未包含"_id"键,则会自动添加"_id"。 "_id"的值在集合中必须是唯一。
# inserted_id是获取添加后的id,若不需要可去掉。
user_id = user_collection.insert_one(user_info).inserted_id
print ("user id is ", user_id)

#批量添加
user_infos = [{
	    "_id": 101,
	    "author": "小黄",
         "text": "Python爬虫开发",
         "tags": ["mongodb", "python", "pymongo"],
         "date": datetime.datetime.utcnow()},
	 {
	    "_id": 102,
	    "author": "小黄_A",
         "text": "Python爬虫开发_A",
         "tags": {"db":"Mongodb", "lan":"Python", "modle":"Pymongo"},
         "date": datetime.datetime.utcnow()},
		 ]
# inserted_ids是获取添加后的id,若不需要可直接去掉。
user_id = user_collection.insert_many(user_infos).inserted_ids
print ("user id is ", user_id)
发布了14 篇原创文章 · 获赞 35 · 访问量 1740

猜你喜欢

转载自blog.csdn.net/qq_45414559/article/details/105362415