(備忘録なので簡単に。より詳しい情報はドキュメントなどを参照ください)
##execute()の返り値
・sqlalchemyでDBに接続して、excute()でクエリを発行したとき、
返ってくるのは'sqlalchemy.engine.result.ResultProxy'クラスの
オブジェクト
・つまり、DBから取得した値をintやstrなどで返すためにはひと工夫が必要
↓↓↓例えばこんな感じ↓↓↓
from sqlalchemy import create_engine
# 余談だけど型アノテーションはちゃんとしよう。この関数宣言をまねしちゃダメだぞ
def fetchUserIdFromDB(userName):
# DB接続
engine = create_engine('sqlite:///app.db')
userId = []
with engine.connect() as con:
# クエリ発行
rows = con.execute("select USER_ID from user_table where USER_NAME='{}'".format(userName))
print(type(rows)) # -> <class 'sqlalchemy.engine.result.ResultProxy'>
for row in rows:
# 一行ずつ辞書化して・・・
userDict = dict(row)
# valueをint化して配列にpush!
userId.push(int(userDict['USER_ID']))
return userId