Python3関連のことを調べてみた2021年06月04日

Python3関連のことを調べてみた2021年06月04日

MySQL からヘッダ付 CSV ファイルをエクスポートする

MySQL から CSV ファイルを取得するには、通常は SELECT * FROM tablename INTO OUTFILE filename; のようにする。

しかし以下のようにするにはどうしたらいいかな?

– カラム名をヘッダ行として CSV ファイルの1行目に追加したい
– スクリプトで行いたい
– FILE権限の無い MySQL ユーザを使いたい

ということで、python で SELECT 構文を実行し、python 実行ユーザ権限でファイルに書き込む方法を考えた。

“`

import pymysql.cursors
import csv

db=pymysql.connect(host=”localhost”, user=”selectuser”, password=”testpassword” , cursorclass=pymysql.cursors.DictCursor)
cursor=db.cursor()
cursor.execute(“USE test”)
sql=(‘SELECT * FROM センサ’)
cursor.execute

元記事を表示

Python3からMySQLのテーブルデータを取得してみた。

勉強中。
すぐ忘れるのでノートとしてのQiita便利じゃない?

https://qiita.com/murasakisou03/private/728dd0d4d6afd69df937

の続き。
データベースの接続まで出来たので、実行したいのもを書いていく。

![python.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1472363/948955d5-d5c7-8ddd-a17c-1e885493ac26.png)

上記の画像、カーソルってなんやねんの答え ↓

https://qiita.com/nkojima/items/c073f977c4c0097bec53

**平たく言えば、「検索条件に合致するレコードを、1件ずつ取り出すための仕組み」となります。**

だそうです。

前回と同様に

【MySQL入門】PythonからMySQLを使ってみよう!mysqlclient利用編

このページを見ていく。

いろいろテーブルを初期化したり作成したりしてるが
私がやりたいのはもうすでに作られてるテーブルの取

元記事を表示

Python3からMySQLサーバにログインを試みた。

なんかわからなくなったら探すのめんどくさいからノートにしてます
すぐ忘れるんで。
でもユーザー名とかPWとか隠すのめんどくさい。。

そもそもPython3が入ってなかったので
[(このサイト)](https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-programming-environment-on-an-ubuntu-20-04-server-ja)をステップ3まですべて行ってみた。

###問題のPythonからMySQLを接続する方法。
DBはschoolというものをもう作っていたのでそこに接続するようにする。

【MySQL入門】PythonからMySQLを使ってみよう!mysqlclient利用編

上記のURLを参照

ライブラリのインストールを行っていく。
Debian / Ubuntuの場合

“`sudo apt-get install python-dev default-libmysqlclient-dev“`

Python3の場合は更に追加で以下のライブラ

元記事を表示

pythonでsshトンネルを作成する

# はじめに
開発では、変なところからアクセスされたくないためにDBにアクセスできるサーバを制限しています。
アクセスできるサーバのことを踏み台といいますが、基本的には中継地点になるだけなので開発に便利なソフトウェアがほとんど入っていません。
そこで、トンネルのようにローカルのPCと目的のDBまでの通信を踏み台は通すだけにして、実際の処理はローカルのPCで行うsshトンネルというものが良く使用されます。
sshクライアントで有名なteratermでも可能ですが、業務の自動化の一環で使用したpythonでのsshトンネルの方法をまとめます。

# 環境
– python3:3.6.5
– sshtunnel:0.4.0

# sshtunnelのインストール
sshトンネルを作成するためにsshtunnelを使用します。
sshtunnelのインストールは普通にpipでインストールすれば良いだけです。

“`
pip install sshtunnel
“`

# sshtunnelの使い方
sshtunnelは以下の手順で使用します。

1. sshの設定
2. sshトン

元記事を表示

eval “$(pyenv init -)” がうまく動かない時の対処法

#参考

https://github.com/pyenv/pyenv/issues/1906

#問題

RaspiOSでpyenv使おうとしたら

“`
WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.
“`

っていうのが出て、`which python` してもpyenvのpythonじゃなく `/usr/bin/python` を見てしまっていた。

#解決策
“`
eval “$(pyenv init -)”
“`

“`
eval “$(pyenv init –path)”
“`
に書き換えたらうまくいった

元記事を表示

Python3 Subprocess.Popen()とcommunicate()について

#1. はじめに
今回は“`subprocess.Popen()“`と“`subprocess.Popen().communicate()“`の基本的な動作について記載する.

#2. 動作環境
– macOS Big Sur 11.4
– Python 3.7.9

#3. ソースコードと動作結果

##3.1. コマンドの実行

ファイルのコピーコマンドを実行する.

“`Python:test.py
import subprocess

src = “/Users/ユーザ名/Desktop/a/test.txt”
dst = “/Users/ユーザ名/Desktop/b”

cmd = [“cp”, src, dst]
subprocess.Popen(cmd)
“`

または

“`Python:test.py
import subprocess

src = “/Users/ユーザ名/Desktop/a/test.txt”
dst = “/Users/ユーザ名/Desktop/b”

cmd = “cp ” + src + ” ” + dst
subproces

元記事を表示

【AtCoder】ABC190-194のCをPython3で解説

## ABC190 C – Bowls and Dishes

https://atcoder.jp/contests/abc190/tasks/abc190_c

### タイプ

– 全探索(bit全探索)
– ライブラリ
– set()

### 解説
工夫して解く全探索問題。
問題文が少し理解しにくいと思うが、いってしまえばこうだ。
**「C, Dのどちらかを選んで組み合わせた4つの数が、各A, Bの条件にどれだけ当てはまるか」**ということだ。

これでもわかりにくいと思うので、サンプル入力を参考にして解説していく。

“`python
4 4
1 2
1 3
2 4
3 4
4
3 4
1 2
2 4
2 4
“`

入力の部分の解説は省く。
問題は`for balls in product(*choice)`からである。

まず、`*`はかんたんにいうと、**大枠の括弧を外す操作**である。
例えば、このときの`choice`は、`[(3, 4), (1, 2), (2, 4), (2, 4)]`である。つまり、`*choice`は、`(3, 4) (1, 2) (2

元記事を表示

ColaboratoryでS3を読みこむ

今年頭から仙台市場のデータをAWS lambdaを利用してS3に溜め込んでいる。
ある程度溜まったので、確認してみる。

#読み込み等

“`python:s3_read.ipynb
# the AWS SDK for Python (Boto3) の読み込み
!pip install boto3 -q
import pandas as pd
import boto3
# ERRORがでるけどあまり気にしない。

# S3アクセス準備
# KEY, SECRETは 準備して、変数に入れておく。
s3 = boto3.resource(‘s3’,
region_name=”us-east-1″,
aws_access_key_id=KEY,
aws_secret_access_key=SECRET
)

bucket=s3.Bucket(‘sendaimarket’)

# file一覧の取得
files=[ob

元記事を表示

Djangoのサーバーがリクエストを受け取ってからの流れ ②

# 前回までの流れ

①. リクエストを受信
 ↓
②. ミドルウェアチェーンの作成
 ↓
③. ミドルウェアチェーンにリクエストを渡す(ここまで)

前回の記事はこちら。
[Djangoのサーバーがリクエストを受け取ってからの流れ ①](https://qiita.com/kRysTasis/items/f983635da97e501ee267)

前回は、ミドルウェアチェーンにリクエストを渡すところまでを追ったので、今回は_get_responseメソッドが動くところから追ってみようと思います。この辺からURLResolverなどが出てきます。

# 今回やる事

①. ミドルウェアチェーンに含まれる、_get_responseメソッドが呼び出される
 ↓
②. 該当Viewのメソッドを呼び出す事により、レスポンスクラスの取得
 ↓
③. テンプレートエンジンによりテンプレートのレンダリング
この間にミドルウェアによるprocess_responseも呼び出される。
 ↓
④. レンダリングされたレスポンスクラスをストリームに書き込む
 ↓
クライアントに返る。
までを追って

元記事を表示

画像をだいたい全部グレースケールにしたい

# やりたいこと
カラーで保存されたpngファイルがたくさんあります。ほとんどの画像は文字画像なのでグレースケールで保存して容量削減したいのだけれど、一部は写真画像なのでカラーのままにしたい、というケースがあり、Python3+Pillow でやってみました

# 事前調査
ググり力がたりないけれどいくつか似た要望を持っている人を見つけました。これらをもとに少し頑張ってみます

– [画像を読み込んで白黒かカラーかを判別するには?- 教えてgoo](https://oshiete.goo.ne.jp/qa/6788162.html)
– [書籍の自炊画像から、カラーページとモノクロページを判別するプログラムを実装したいです – 人力はてな](https://q.hatena.ne.jp/1340883203)

# やったこと
ようはグレーっぽさなる指標を得られればいいわけです。それは、RGBからHSVに変換した際のS値([彩度](https://ja.wikipedia.org/wiki/%E5%BD%A9%E5%BA%A6))です。S値は白・黒・グレーの場合には値が0で, そこから

元記事を表示

pywin32でExcelを操作してみる

#目的
pywin32+Excelの調べものついでに少しだけ触って気がついたことをメモっておく
##気が付いたこと
軽く検索したときに

“`python
import win32com.client
xl = win32com.client.Dispatch(“Excel.Application”)
“`
を見て以下を連想したんだけど

“`vb
Dim myExcel As Object
Set myExcel = CreateObject(“Excel.Application”)
“`
つまるところはそういうことなんですね
Object受けと同様なのでIntelliSenseが効かないのが残念!
Listが普通に使えるのはやはりうれしい

##サンプルコード
VBAでCSVファイルを取り込んでWorksheetに書き込んでいるコードを書き直してみる
・対象データは[郵便番号検索](http://www.post.japanpost.jp/zipcode/)の17ISHIKA.CSV
・コメントにもあるように、VBAで使用する定数はオブジェクトブラウザで確認できるようにE

元記事を表示

Python3で配列の並べ替えの方法

Python3での配列の大きい順に並べる方法です

“`Python
N = int(input())
ab = [None] * N
for i in range(N):
line=input().split(” “)
a = int(line[0])
b = int(line[1])
ab[i] = [a,b]
ab.sort(reverse=True)

for i in range(N):
[a,b] = ab[i]
print(a, b)
“`

小さい順に並べ替える場合は

“`Python
ab.sort(reverse=True)
“`

“`Python
ab.sort
“`

に変えます。この方法は配列を破壊して新しく並べ替えるソートなので

“`Python
ab.sorted
“`

の方が良いと考えられます。

元記事を表示

Pythonのloggingでログ出力先ごとに例外スタックトレースの要否を設定する

## 概要
Pythonのlogging.Logger.exceptionを使用する際、ログ出力先(Handler)ごとに例外スタックトレースを出力するかどうかを設定したい。JavaのLog4jなら%throwableで設定できるが、loggingには同様のフォーマットがなく(標準Formatterを使う限り)必ず出力されることになる。

したがって、個別に設定するためには例外スタックトレースを出力しない独自Formatterを定義する必要がある。

## 実装例
ログファイルには例外スタックトレースを出力し、コンソールには出力しない実装例。

“`sample.py
from logging import getLogger, config, Formatter

class NoExceptionFomatter(Formatter):
“””例外スタックトレースを出力しないFormatter”””
def format(self, record):
record.message = record.getMessage()
if s

元記事を表示

sys.path.append(‘..’)で自作ライブラリがimportできない時の対処法

#対処法

親ディレクトリに自作ライブラリが入ったディレクトリがあり、そこからimportしたい時

“`
..
|–xx
| |-xxx.py
|
|-sample
|-samp.py
“`
よくある記事ではこのようにしているがエラーが出てしまう場合がある↓

“`
import sys
sys.path.append(“..”)
from sample import samp

#実行結果
%python3 xxx.py
ImportError: cannot import name ‘samp’ from ‘sample’
“`
そういう時、以下のようにするとうまく行く

“`
import sys
sys.path.append(“../sample”)
from sample import samp
“`

sys.pathに絶対パスや相対パスなど色々追加して試したが、結局どれもダメで
自作ライブラリのディレクトリを直接追加した時だけうまくいった

誰かの参考になれば嬉しいです

元記事を表示

【yukicoder解説】〜Python3で「No.69 文字を自由に並び替え」をソートを使わずに解いてみた〜

# 目次
1. はじめに
2. 問題URL
3. 一般的な考え方
4. ソートを使わない考え方
5. おわりに

**質問・指摘などがありましたらコメントか[Twitter](https://twitter.com/4voltex/)までお願いします。**
**LGTMしていただけると密かに喜びます。**

# はじめに
今回は[yukicoder](https://yukicoder.me/)のNo.69をPython3で解いてみました。

# 問題URL
・[No.69 文字を自由に並び替え – yukicoder](https://yukicoder.me/problems/no/69)

# 一般的な考え方
2つの文字列 _A_, _B_のうち、_A_を自由に並び替えたとき、_B_と一致させられるか。という問題です。問題の定義には、
・どちらも等しい長さ
・すべて小文字のアルファベットからなる
とあります。ここから_A_と_B_に含まれる文字が一致しなければ、_A_を並び替えても_B_にならないことがわかります。このような場合、_A_をソートして_B_と一致す

元記事を表示

【yukicoder解説】〜Python3で「No.289 数字を全て足そう」を解いてみた〜

# 目次
1. はじめに
2. 問題URL
3. 考え方
4. 提出コード
5. コード解説
6. おわりに

**質問・指摘などがありましたらコメントか[Twitter](https://twitter.com/4voltex/)までお願いします。**

# はじめに
[yukicoder](https://yukicoder.me/)で簡単な問題として掲載されていたNo.289を解きました。Python3の解説が見当たらなかったので、私の解答を参考までに書いておきます。

# 問題URL
・[No.289 数字を全て足そう – yukicoder](https://yukicoder.me/problems/no/289)

# 考え方
半角英数字のみからなる文字列が与えられます。この中から数字を抽出し、総和を求めればよいです。

## 文字列メソッドの利用
Pythonでは文字列(“`str“`)がどんなものであるか判定するためのメソッドが用意されています。判定できるのは英字、英数字、ASCII文字、空文字列などです。
・[組み込み型 — Python 3

元記事を表示

【AtCoder】ABC203をPython3で解説

ABC203の解説。

https://atcoder.jp/contests/abc203

## A – Chinchirorin
### 解説
3つのサイコロを振って、a,b,cで2つが同じ目ならもう一つの目を、同じものがないときは0を出力する問題。

これは単純に2つが同じ目が出るとき、`a==b`、`b==c`、`c==a`の場合で、もう1つの目を出力、この条件に引っかからなければ、`0`を出力すれば良い。

### コード

“`python
a, b, c = map(int, input().split())

if a == b:
print(c)
elif b == c:
print(a)
elif c == a:
print(b)
else:
print(0)
“`

## B – AtCoder Condominium
### 解説
N階建て、K号室まで持つマンションの総部屋番号の合計を出すもの。

i階のj号室の部屋番号は`i0j`、つまり、`i * 100 + j`と表せる。これらをループで表現し、`total`に加えてい

元記事を表示

RaspberryPi4BとSORACOM Airを用いたVUIシステムの構築

#はじめに
本記事は、[2021年4月19日〜5月31日 | ソラコム主催 ラズパイコンテスト](https://www.lp.soracom.jp/202104-soracom-raspberry-pi-contest)参加のための記事です。

この企画を簡単に説明すると
・Raspberry Piと、SORACOM IoT SIMまたはSORACOMサービスを利用し**「普段の生活を豊かにした」「業務の改善を実現した」**IoT作品を作る。
・**SORACOMサービス**と**ラズパイ**の使用が必須
・アイデアのみではなく、きちんと**実際に動く物**を作る
です。

ということで、今回は「普段の生活を豊かにした」に焦点を絞って、作品を作りました。

#背 景
プライベートな話ですが、妻が妊娠しました。
まだ安定期に入っておらず、つわりがひどい時期で、食欲がありません。
何にも食べないのは身体に良くないので、食べられるものを食べさせたいのですが、
**食べたいものがその時によって変わる**らしいです。

しかも、帰り道に立ち寄るスーパーが**某R社の電波圏外**で、電波が入りま

元記事を表示

機種依存文字を含むファイルの探索と一括置換

#1.はじめに
部署内の「IT管理者」を担当しています。この役自体は嫌いではないのですが、本業という訳でもないので作業は効率よく片付けたいです。今回の作業には結構時間を使ってしまったので、今後、似た作業に悩む人の助けになればと思い、まとめました。

#2.経緯
今回、所属する部署の文書管理システムを新しいものに変更することになりました。
困ったことに、既存データを新しいシステムに一括インポートする際、機種依存文字があるとインポートできないことが判明。既存のシステムのメーカーサポートはすでに切れており、また当時、部単独で導入したこともあって「インポートの準備までは自力で頑張ってね!」という状況でした。

ということで本題です。次の準備が必要です。
  1)対象ファイルに含まれるすべての機種依存文字を適切な文字に置換
  2)置換後のファイル名のリスト(csv)

**以下、作業にあたってはバックアップを取ってから作業されることをおススメします。**

#3.素材:文書データ
「データ多いけどひとりで大丈夫?手分けできるところは若者にも手伝ってもらったら?」と提案される人海戦術を全力の笑顔

元記事を表示

ニコ生ダウンローダーを書く

# はじめに

ニコ生のタイムシフトをダウンロードしたかったんです。高画質のために深夜に見るのも辛いし。でも探しても全然ダウンローダーが無い。
なのでGoogleChromeのDevToolとか見ながら夜業して作りました。websocketとかの勉強になったかな?
悪用厳禁。
早くコードを見せろという方用にGithubのリンクを貼っときます。
https://github.com/kairi003/nicolive-dl

# 参考文献

いきなり参考文献というのもどうかと思うのですが、@mueruさんの「[ニコ生の配信を分析し、動画として保存するために頑張った話](https://qiita.com/mueru/items/ccd891853db2bbca9cfe)」を大変参考にさせていただきました。
今回私が書いたのはこれの発展ですね。GoogleChrome+Seleniumなしで動くように頑張りました。
あとは@tor4kichiさんの公開している[ニコ生配信情報WebSocketのまとめ](https://gist.github.com/tor4kichi/c5475c836

元記事を表示

OTHERカテゴリの最新記事