于贵洋的博客

BI、数据分析


  • 首页

  • 分类

  • 标签

  • 归档

  • 站点地图

  • 公益404

  • 关于

  • 搜索

BeautifulSoup教程(1) - 简介及安装

发表于 2017-04-14 | 分类于 Python-爬虫

最近在学习Python,按照一些博客练习爬虫,最简单的步骤,就是访问一个主页,根据正则表达式去获取我们想要的标签数据;

比如这样:

1
2
3
4
5
6
7
8
9
10
11
#加载网址,获取当前页面
def getHTML(url) :
page = urllib.urlopen(url)
html = page.read()
return html
def getImage(html) :
reg = r'src="(.+?\.jpg)"'
reg2 = r'<img alt="(.+?)" src="(.+?\.jpg)'
image_reg = re.compile(reg2)
img_list = re.findall(image_reg,html)

阅读全文 »

Kettle手册(十二)- 控件使用-从步骤插入数据

发表于 2017-04-14 | 分类于 ETL-Kettle

这里介绍一个控件的小功能,也是最近才发现的,之前在“表输入”中要使用参数的话,一般都是使用变量,
其实,还有个功能也可以尝试使用
Kettle-handbook-12-01.png
整体流程就是这样,我们第一个 query_paramter,就是查询了我们想设置的参数
Kettle-handbook-12-02.png
然后,就是我们真正需要的,我们再表输入中,使用 “?”来占位,然后“从步骤插入数据”,选择上一个步骤,然后会将数据替换占位符
Kettle-handbook-12-03.png
最后,我们将文件导出即可,奥对了,我们可以改成日志控件,直接输出查看
Kettle-handbook-12-04.png
刚刚,上面还有一个“执行每一行”,这个就是,如果我们有多个参数,
Kettle-handbook-12-05.png
就可以使用这个参数了,很方便,好了,就介绍到这里先。
Kettle-handbook-12-06.png

SQLAlchemy手册(二)- 增删改查

发表于 2017-04-13 | 分类于 Python-数据库

好了,这里,我们来看看,怎么使用SQLAlchemy,先从最简单的增删改查来看看,这里我们使用PostgreSQL数据库

1. 连接PG数据库

因为SQLAlchemy底层连接,还是使用这些框架,所以我们想要连接PostgreSQL,还得先安装下这些,这里我们使用psycopg2

不装的话,我们连接时,会报错

1
pip install psycopg2

安装好后,我们来看看怎样连接PG
我们再SQLAlchemy中连接数据库的话,需要使用这个叫做Engine的类,
关于介绍我们可以看官方的教程:http://docs.sqlalchemy.org/en/rel_1_1/core/engines.html

他可以适配大部分数据库,大家可以自行尝试下

1
2
3
4
5
6
7
#!/usr/bin/python
from sqlalchemy import create_engine
engine = create_engine('postgresql://postgres:shishi@172.16.201.12:5432/postgres',echo=True)
print engine

2. create table/drop table

这里,我们来看看怎样用orm的思想去create table、drop table
按照orm的思想,这里还有一个MetaData类得看下

这里的示例,我们定义一个table“t_users”,有2个字段,id,user_name

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/python
from sqlalchemy import Table, Column, Integer, String, MetaData, create_engine
engine = create_engine('postgresql://postgres:shishi@172.16.201.12:5432/postgres',echo=True)
metadata = MetaData()
users = Table('t_users',metadata,
Column('id',Integer),
Column('user_name',String(20))
)
#do the drop first
metadata.drop(engine)
#now create the table
metadata.create(engine)

我们执行下
上面,我们create_engine的时候,指定了echo=True,我们就可以看到输出语句了
这里的drop,有一个参数,checkfirst=True
,默认就是TRUE,会判断该表是否存在,如果存在就执行删除,create也是一样的,会先判断是否存在

我们看看数据库

–晚上又看了看,感觉上面的方法可以使用,但是,貌似不是ORM思想的方法,又看了看官方的文档,自己先试试,明天再接着整理

3. 查询数据

好了,上面的Table方式,可以用来创建表,这里
参考官方的教程:http://docs.sqlalchemy.org/en/rel_1_1/orm/tutorial.html

3.1 定义Mapping类

和Java里的一样,我们得定一些实体类,和数据库中的表做映射

1
2
3
4
5
6
7
8
9
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class SomeClass(Base):
__tablename__ = 'some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))

像上面这样,我们就定义了一个类,我们来实际写一个看看
这里,我们映射了数据库中的“t_users”表,有2个字段,“id”和“user_name”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/python
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__='t_users'
id = Column(Integer,primary_key=True)
user_name = Column(String(10))
def __repr__(self):
return "<User(id='%s', user_name='%s')>" % (self.id, self.user_name)

3.2 session

下面,我们就来查询下数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/python
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__='t_users'
id = Column(Integer,primary_key=True)
user_name = Column(String(10))
def __repr__(self):
return "<User(id='%s', user_name='%s')>" % (self.id, self.user_name)
engine = create_engine('postgresql://postgres:shishi@172.16.201.12:5432/postgres',echo=True)
Session = sessionmaker(bind=engine)
session = Session()
#query all users
user_list = session.query(User).all()
print user_list

上面的话,我们还用到了session,这里的session,暂时理解为,可以开一个事务,处理我们的逻辑,我们执行select的话,也需要这个
这里,我们就直接查出所有的记录就可以了

图片.png

4. insert

1
2
3
new_user = User(id=666,user_name='ayang')
session.add(new_user)
session.commit()

5.update

1
2
3
4
5
6
#update the user
update_user = session.query(User).filter_by(id=666).first()
print update_user
update_user.user_name='apple'
session.commit()

SQLAlchemy手册(一)-简介及安装

发表于 2017-04-12 | 分类于 Python-数据库

Python新手,目前学习中,最近发现个叫SQLAlchemy的ORM框架,就是类似Java里面的Hibernate啊,Mybatis啊之类的,这里也简单记录下。
官网地址:http://docs.sqlalchemy.org/en/rel_1_1/

1. SQLAlchemy 介绍

这里直接摘一下百度百科的内容,简单说就是ORM框架,更加方便的去和数据库库连接。

2. SQLAlchemy安装

熟悉Python的同学应该很擅长这个了,而且官方文档上也有介绍,http://docs.sqlalchemy.org/en/rel_1_1/intro.html#installation

2.1 pip 安装

1
pip install SQLAlchemy

2.2 setup.py

1
python setup.py install

家里网速不太好,就直接下了个包,用这种方式安装了,没啥问题

我们引入验证一下

好了,第一回,先简单说到这,下一回,我们来看看怎么使用

Kettle手册(十一)- 用PGP加密、加密文件

发表于 2017-04-11 | 分类于 ETL-Kettle

看到有同学提问,以前也没用过,百度了一下,找了些资料,这里记录下。

1. 安装gpg4win

这个gpg4win是干嘛的呢,我们可以去他的官网看看:gpg4win
目前,只知道他是加密的,这个是对Windows平台使用的
Kettle-handbook-11-01.png
这里可能还有个PGP的概念,看看百度百科
Kettle-handbook-11-02.png

阅读全文 »
1…192021…23
于贵洋

于贵洋

111 日志
17 分类
30 标签
RSS
GitHub
友情链接
  • 很久之前的CSDN博客
0%
© 2017 于贵洋
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.3
Hosted by GitHub Pages
本站访客数 人次 本站总访问量 次