Pythonでプログラミング
Pythonでプログラミング
背景
Pythonを学んでいるので何かしら作ってみようかと思う。
Insert文をpythonで作ってみる。
対象ユーザー(例)
自宅でポートフォリオ作成のためにWebサービスを作っていて
データ作成のためにInsert作成をツールで便利に使いたい人。
非対象ユーザー
現場で使えないと0だと思っている人。
レビューとかお客さんがとか言って開発者にのしかかってくる人。
進捗進捗ばかり言って日になんども衝動的にくる人。
クレームばかりつけてくる人。
調査
元にしたSQL文
create table drivers (
id serial primary key,
first_name varchar,
last_name varchar
);
INSERT INTO drivers (first_name, last_name) VALUES ('Amy', 'Hua');
要件:
文字列はシングルクォートで囲むこととする。
項目が可変であっても対応できるものとする。
テーブル名は入力ファイル名を指定することで設定することにする。
原案
・データをファイルから読み取る。
・SQLを作る。
・ファイルに書き込む。
環境
Colaboratoryを使用することを提案する。
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
使い方は下記のアドレス参照
https://obgynai.com/google-colaboratory/
SQL文はpostgresql を想定している。
画像
参考GITHUB
以下ソースコード
drivers.csv
VARCHAR(n),VARCHAR(n)
first_name,last_name)
Amy,Haru
Gimmy,Smith
#drivers.csvを編集を行い、ファイル名をテーブル名+csvに変更する
input = './sample_data/drivers.csv'
output = './sample_data/output.txt'
table = input.split('/')[-1].split('.')[0]
with open (input, encoding='utf-8') as f:
with open('output.txt', 'w', encoding='utf-8') as g:
contents = "Insert into " + table +"("
i = 0
for row in f:
if i == 0:
typeList = row.rstrip().split(',')
if i ==1:
columList = row.rstrip().split(',')
k = 0
for c in columList:
if len(columList) == k+1:
contents = contents + c + 'VALUES ('
else:
contents = contents + c + ','
k = k + 1
basecontets = contents
if i >= 2:
j = 0
for r in row.rstrip().split(','):
if not 'INTEGER' in typeList[j]:
r = "'"+ r +"'"
if len(row.rstrip().split(',')) == j+1:
basecontets = basecontets +r
else:
basecontets = basecontets +r+','
j = j + 1
basecontets = basecontets+ ');' + '\n'
g.write(basecontets)
basecontets = contents
i = i + 1
print("作成完了しました")
output.txt
Insert into drivers(first_name,last_name)VALUES ('Amy','Haru');
Insert into drivers(first_name,last_name)VALUES ('Gimmy','Smith');
Author And Source
この問題について(Pythonでプログラミング), 我々は、より多くの情報をここで見つけました https://qiita.com/JoeB/items/7a2bf64be1e536d72890著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .