Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Satoshi Yamada
2,285 views
DBエンジニアに必要だったPythonのスキル
DBエンジニアがシェルスクリプトでよくやることをpythonで置き換えようとした話ですhttp://startpython.connpass.com/event/28359/ のLTです。
Technology
◦
Read more
4
Save
Share
Embed
Download
Downloaded 17 times
1
/ 24
2
/ 24
3
/ 24
4
/ 24
5
/ 24
6
/ 24
7
/ 24
8
/ 24
9
/ 24
10
/ 24
11
/ 24
12
/ 24
13
/ 24
14
/ 24
15
/ 24
16
/ 24
17
/ 24
18
/ 24
19
/ 24
20
/ 24
21
/ 24
22
/ 24
23
/ 24
24
/ 24
More Related Content
PDF
本気でPythonで宛名書きした話
by
Satoshi Yamada
PDF
bottleで始めるWEBアプリの最初の一歩
by
Satoshi Yamada
PDF
Pythonで業務改善をしたときにあった問題(ライト版)
by
Satoshi Yamada
PDF
bottle.pyをつかったチャットアプリ作成チュートリアル
by
Satoshi Yamada
PDF
pythonでemlファイルを扱う話
by
Satoshi Yamada
PDF
Requestsで始める5分前帰社
by
Satoshi Yamada
PDF
Python学習奮闘記#07 webapp
by
Takeshi Akutsu
PDF
S10 t1 spc_by_nowfromnow
by
Takeshi Akutsu
本気でPythonで宛名書きした話
by
Satoshi Yamada
bottleで始めるWEBアプリの最初の一歩
by
Satoshi Yamada
Pythonで業務改善をしたときにあった問題(ライト版)
by
Satoshi Yamada
bottle.pyをつかったチャットアプリ作成チュートリアル
by
Satoshi Yamada
pythonでemlファイルを扱う話
by
Satoshi Yamada
Requestsで始める5分前帰社
by
Satoshi Yamada
Python学習奮闘記#07 webapp
by
Takeshi Akutsu
S10 t1 spc_by_nowfromnow
by
Takeshi Akutsu
What's hot
PDF
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
by
Kei IWASAKI
PDF
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
by
Kei IWASAKI
PPTX
Bottle使ってPython学習一緒にはじめませんか?
by
Tatsuya Shinozuka
PPTX
Python札幌201406
by
Shinya Okano
PDF
S01 t1 tsuji_pylearn_ut_01
by
Takeshi Akutsu
PDF
『アジャイルデータサイエンス』1章 理論
by
Hisao Soyama
PDF
S08 t0 orientation
by
Takeshi Akutsu
PDF
S20 t1 stapyのこれまでとこれから
by
Takeshi Akutsu
PDF
S18 t0 introduction
by
Takeshi Akutsu
PDF
S09 t0 orientation
by
Takeshi Akutsu
PDF
OSS Study#19_LT
by
NaoY-2501
PDF
S16 t1 python学習奮闘記#6
by
Takeshi Akutsu
PDF
10分でわかるPythonの開発環境
by
Hisao Soyama
PDF
読書会開催提案
by
YAMANE Toshiaki
PDF
S10 t0 orientation
by
Takeshi Akutsu
PDF
Python札幌 2012/06/17
by
Shinya Okano
PPTX
コボラーがPython始めてみた話
by
Yuuki Nakajima
PDF
WindowsでPython
by
drillan
ODP
stapy#23 LT
by
NaoY-2501
PDF
まとめ
by
Takeshi Akutsu
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
by
Kei IWASAKI
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
by
Kei IWASAKI
Bottle使ってPython学習一緒にはじめませんか?
by
Tatsuya Shinozuka
Python札幌201406
by
Shinya Okano
S01 t1 tsuji_pylearn_ut_01
by
Takeshi Akutsu
『アジャイルデータサイエンス』1章 理論
by
Hisao Soyama
S08 t0 orientation
by
Takeshi Akutsu
S20 t1 stapyのこれまでとこれから
by
Takeshi Akutsu
S18 t0 introduction
by
Takeshi Akutsu
S09 t0 orientation
by
Takeshi Akutsu
OSS Study#19_LT
by
NaoY-2501
S16 t1 python学習奮闘記#6
by
Takeshi Akutsu
10分でわかるPythonの開発環境
by
Hisao Soyama
読書会開催提案
by
YAMANE Toshiaki
S10 t0 orientation
by
Takeshi Akutsu
Python札幌 2012/06/17
by
Shinya Okano
コボラーがPython始めてみた話
by
Yuuki Nakajima
WindowsでPython
by
drillan
stapy#23 LT
by
NaoY-2501
まとめ
by
Takeshi Akutsu
Similar to DBエンジニアに必要だったPythonのスキル
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
by
shoma h
PDF
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
by
Shigeru Hanada
KEY
ひのきのぼうだけで全クリ目指す
by
AromaBlack
PDF
Heroku Postgres
by
Ayumu Aizawa
PDF
C16 45分でわかるPostgreSQLの仕組み by 山田努
by
Insight Technology, Inc.
PDF
Wrapping a C++ library with Cython
by
fuzzysphere
PDF
Postgresql advent calender 2014 using jsonb by ecpg
by
Toshi Harada
PDF
PyPy 紹介
by
shoma h
PDF
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
by
Takanori Suzuki
PPTX
rpi_handson_2.5
by
teruyaono1
PDF
Python東海GAEやってみた
by
Mori Shingo
ODP
Introduction of Python
by
Tomoya Nakayama
PDF
DATUM STUDIO PyCon2016 Turorial
by
Tatsuya Tojima
PDF
Pythonを取り巻く開発環境 #pyconjp
by
Yoshifumi Yamaguchi
PDF
OSC2012 Tokyo Spring, USP lab. presentation
by
Ryuichi Ueda
PDF
第1回python勉強会
by
Yoshio Shimomura
PDF
LLdeade Python Language Update
by
Atsushi Shibata
PDF
Heroku Postgres
by
Salesforce Developers Japan
KEY
Hello World Python featuring GAE
by
Maito Kuwahara
PDF
Pythonで始めるDropboxAPI
by
Daisuke Igarashi
次世代言語 Python による PyPy を使った次世代の処理系開発
by
shoma h
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
by
Shigeru Hanada
ひのきのぼうだけで全クリ目指す
by
AromaBlack
Heroku Postgres
by
Ayumu Aizawa
C16 45分でわかるPostgreSQLの仕組み by 山田努
by
Insight Technology, Inc.
Wrapping a C++ library with Cython
by
fuzzysphere
Postgresql advent calender 2014 using jsonb by ecpg
by
Toshi Harada
PyPy 紹介
by
shoma h
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
by
Takanori Suzuki
rpi_handson_2.5
by
teruyaono1
Python東海GAEやってみた
by
Mori Shingo
Introduction of Python
by
Tomoya Nakayama
DATUM STUDIO PyCon2016 Turorial
by
Tatsuya Tojima
Pythonを取り巻く開発環境 #pyconjp
by
Yoshifumi Yamaguchi
OSC2012 Tokyo Spring, USP lab. presentation
by
Ryuichi Ueda
第1回python勉強会
by
Yoshio Shimomura
LLdeade Python Language Update
by
Atsushi Shibata
Heroku Postgres
by
Salesforce Developers Japan
Hello World Python featuring GAE
by
Maito Kuwahara
Pythonで始めるDropboxAPI
by
Daisuke Igarashi
More from Satoshi Yamada
PDF
15分で情シスに怒られる方法
by
Satoshi Yamada
PDF
10080分でPythonからIP Messeneger
by
Satoshi Yamada
PDF
Djangoで業務改善したい
by
Satoshi Yamada
PDF
PostgreSQLとPythonとSQL
by
Satoshi Yamada
PDF
PostgreSQL実行計画入門@関西PostgreSQL勉強会
by
Satoshi Yamada
PDF
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
by
Satoshi Yamada
PDF
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
by
Satoshi Yamada
PDF
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
by
Satoshi Yamada
PDF
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
by
Satoshi Yamada
15分で情シスに怒られる方法
by
Satoshi Yamada
10080分でPythonからIP Messeneger
by
Satoshi Yamada
Djangoで業務改善したい
by
Satoshi Yamada
PostgreSQLとPythonとSQL
by
Satoshi Yamada
PostgreSQL実行計画入門@関西PostgreSQL勉強会
by
Satoshi Yamada
PostgreSQL SQLチューニング入門 実践編(pgcon14j)
by
Satoshi Yamada
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
by
Satoshi Yamada
201505 PostgreSQLアンカンファレンス(PL/Pythonで作るWEBアプリ)
by
Satoshi Yamada
PythonでテキストをJSONにした話(PyCon mini sapporo 2015)
by
Satoshi Yamada
Recently uploaded
PDF
n8n - オープンソースで実現する次世代ワークフロー自動化
by
Daisuke Masuda
PPTX
20251029.セミナー.Claude Code on the web.pptx
by
ssuserc9be7c
PDF
How to Install and setup DEXCS2025 for OpenFOAM
by
Etsuji Nomura
PDF
講演資料「テキストマイニングでできることー理学療法分野で活用するためのコツと注意点ー」
by
Matsushita Laboratory
PDF
45分で遊び倒す! Nano Banana 2大ゲーム体験会 (Tech or Treat Night)
by
gdscosaka
PDF
Scrum Sunrise 2025年 市場ニーズの発見と仮説検証 ワークショップ
by
Gregory Fontaine
PPTX
AWS Card Clash で遊ぼう!2025/10/24の勉強会で発表されたものです。
by
iPride Co., Ltd.
PDF
Marp - MarkdownとCSSでスライド作成 2025/10/31の勉強会で発表されたものです。
by
iPride Co., Ltd.
PDF
Dragino社製 LoRaWAN AI人流カウンターPF52 日本語マニュアル
by
CRI Japan, Inc.
PDF
「Technology×Business×生成AI」株式会社CoToMaで未来を作る!
by
fujishiman
n8n - オープンソースで実現する次世代ワークフロー自動化
by
Daisuke Masuda
20251029.セミナー.Claude Code on the web.pptx
by
ssuserc9be7c
How to Install and setup DEXCS2025 for OpenFOAM
by
Etsuji Nomura
講演資料「テキストマイニングでできることー理学療法分野で活用するためのコツと注意点ー」
by
Matsushita Laboratory
45分で遊び倒す! Nano Banana 2大ゲーム体験会 (Tech or Treat Night)
by
gdscosaka
Scrum Sunrise 2025年 市場ニーズの発見と仮説検証 ワークショップ
by
Gregory Fontaine
AWS Card Clash で遊ぼう!2025/10/24の勉強会で発表されたものです。
by
iPride Co., Ltd.
Marp - MarkdownとCSSでスライド作成 2025/10/31の勉強会で発表されたものです。
by
iPride Co., Ltd.
Dragino社製 LoRaWAN AI人流カウンターPF52 日本語マニュアル
by
CRI Japan, Inc.
「Technology×Business×生成AI」株式会社CoToMaで未来を作る!
by
fujishiman
DBエンジニアに必要だったPythonのスキル
1.
DBエンジニアに必要だった PYTHONのスキル 山田 聡@DENZOWILL #STAPY 20160412
2.
WHO AM I? 非プログラマ DBエンジニア6年生(PostgreSQL,Oracle) Python歴3年? worked
at 株式会社アシスト stapy参加7回目
3.
#STAPYでLTを6回やらせていただきまし た http://www.slideshare.net/satoshiyamada71697 stapy05-stapy11 Pythonでハガキに宛名書きする方法 PythonでIPMessenger送る方法 15分で情シスに怒られる方法 etc
4.
今日のくだらない話は DBエンジニアがPythonで色々やろうと 思った時にぶち当たったつらみ
5.
あるDBエンジニアの現実
6.
普段触る環境 Linux Windows Unix(AIX, HP-UX, Solaris)
7.
普段触る環境 Linux <--ここで楽をしたい
8.
LINUXならPYTHONより シェルスクリプトじゃない?
9.
実際シェルスクリプトが多い シェルスクリプトで凝ったことするの辛い… Python書き慣れてるし…こっちがいい LinuxならPython最初から入ってるし(新しいリリースと はいっていない) Windowsに移植できる(やったとはいっていない)
10.
POSIX原理主義者の方は そのマサカリを下ろして下 さい
11.
つくらないといけないもの シェルスクリプトの代替 OSコマンドを叩いて結果を受けとる感じの処理が多い ファイルの読み書きも多い 客先では追加インストールができないケースも多いので 標準モジュール縛りプレイ
12.
よく言われること ls でファイルのリストがほしい OSコマンドを叩きたい ある文字列ふくまれてるかチェックしたい 時刻処理全般 XMLとかHTMLとか解釈したい sudoしたい
13.
LS でファイルのリストがほしい ls -lR
*.py的なことがしたい os.walkで全部拾って globでマッチング def ls(start_dir, match_rule="*"): """ 指定した条件を満たすファイル一覧を取得する :param start_dir:捜索開始位置 :param match_rule: globに渡すファイル名のマッチングルール :return: dir_list, file_list """ file_list = [] for dirpath, dirnames, filenames in os.walk(start_dir): for filename in filenames: tmp_file_name = os.path.join(dirpath, filename) # ファイル名がルールを満たすか if glob.fnmatch.fnmatch(filename, match_rule): file_list.append(tmp_file_name) return file_list
14.
OSコマンドを叩きたい subProcessで出来る communicate()で、がっと実行して結果を取る def exec_os_command(command_str): """ OSコマンドを実行する。コマンドはshell上で実行される :param command_str:実行するコマンド。オプションなども文字列で渡す :return: """ # 現在の環境変数をコピーしておく child_env = os.environ.copy() # LANG=Cが安定 child_env["LANG"] = "C" p = subprocess.Popen( command_str,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE,env=child_env, shell=True ) # EOF を送りつける stdout, stderr = p.communicate() return stdout, stderr
15.
ある文字列ふくまれてるかチェックし たい re(り?れ?)でOK In [7]: stdout, stderr = exec_os_command("ls l /") In [9]: bin_pattern = re.compile(r"bin") In [10]: for line in stdout.split("n"): ....: if bin_pattern.search(line): ....: print line ....: drwxrxrx 2 root root 4096 Mar 8 09:51 bin drwxrxrx 2 root root 12288 Mar 29 08:35 sbin
16.
時刻処理全般 datetime ただし、2.4ではstrptime/strftimeがないので注意 def to_date(date_string, date_format): """ 日付文字列をdatetime.datetimeオブジェクトにして戻す :param date_string: 処理対象の文字列 :param date_format: 日付フォーマット :return: """ # 2.4でstrptimeがないためのハック if hasattr(datetime, 'strptime'): # python 2.6 strptime = datetime.strptime else: # python 2.4 equivalent strptime = lambda date_string, format: datetime.datetime(*( time.strptime(date_string, format return strptime(date_string, date_format)
17.
In [15]: to_date("20160102 13:45", "%Y%m%d %H:%M") Out[15]: datetime.datetime(2016, 1, 2, 13, 45)
18.
XMLとかHTMLとか解釈したい xmlモジュールつらい BeautfulSoup使いたい BeautifulSoup4は色々依存してる(lxml,html5lib) BeautifulSoup3なら単一ファイル置くだけ!(多分 BadKnowHow...) In [1]: from BeautifulSoup import BeautifulSoup In [2]: import urllib2 In [3]: response = urllib2.urlopen('https://github.com/denzow/ipymessenger') In [4]: html = response.read() In [5]: soup = BeautifulSoup(html) In [7]: soup.title.string Out[7]: u'GitHub denzow/ipymessenger: IP messenger via python library' In [16]: link_list = soup.findAll("a") In [17]: link_list[1].get("href") Out[17]: u'https://github.com/'
19.
SUDOしたい root実行のスクリプトから特定ユーザにsudoしてコマン ド叩きたい uid,gidを特定してos.setuid/os.setgidすればOK! def check_uid_and_gid(user_name): """ ユーザのuidとgidを取得する :param user_name: ユーザ名 :return: uid, gid """ # passwdを開いて確認スル etc_passwd_file = open("/etc/passwd") etc_passwd = etc_passwd_file.readlines() etc_passwd_file.close() attrs = [ None for x in range(4)] for line in etc_passwd: if line.find(user_name+":") == 0: # v1124:x:501:502::/home/v1124:/bin/bash attrs = line.split(":") break return int(attrs[2]), int(attrs[3])
20.
class SudoSetUp(object): """ Subprocessに渡してsudoさせるためのクラス """ def __init__(self, uid, gid): self.uid = uid self.gid = gid def sudo(self): # 指定されたIDですでに起動しているなら何もしない if self.uid == os.getuid() and self.gid == os.getgid(): pass else: os.setgid(self.gid) os.setuid(self.uid)
21.
あとはsubprocess.Popenのpreexec_fnに引き渡すだけで、 fork時にuid/gidを書き換えて実行してくれる def exec_os_command(command_str, user_name, return_code_check=True): """ OSコマンドを実行する。コマンドはshell上で実行される : :return: """ # 現在の環境変数をコピーしておく child_env = os.environ.copy() # LANG=Cが安定 child_env["LANG"] = "C" # passwdからuid/gidの取得 uid, gid = check_uid_and_gid(user_name) sudoset = SudoSetUp(uid, gid) p = subprocess.Popen( command_str,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subproces preexec_fn=sudoset.sudo, # ここ! env=child_env, shell=True )
22.
まとめ Pythonで泥臭いことをかっこ良くやろう シェルスクリプトの代替でもやってける 早くRHELはPython3標準にしてくれ
23.
ご清聴ありがとうございました。 引き続きご歓談をお楽しみ下さい。
24.
終わり
Download