python接続データベースsqlクエリーの実行

1652 ワード

Python接続データベースでsql操作を実行
type_status_dict = {}
with connections['default'].cursor() as cursor:
    cursor.execute(query, [school_id, year, semester, subject_id])
    alldata = cursor.fetchall()
    for i in alldata:
        type_status_dict[i[1]] = i[0]
return type_status_dict
with connection.cursor() as cursor:
    cursor.execute("SELECT cache_key FROM %s "
                   "WHERE cache_key = %%s and expires > %%s" % table,
                   [key, connection.ops.adapt_datetimefield_value(now)])
    return cursor.fetchone() is not None

fetchone() :
単一のメタグループ、すなわちレコード(row)を返し、結果がなければNoneを返します.
fetchone()の使い方:
cur.execute("select host,user,password from user where user='%s'"%acc) jilu = cur.fetchone()##このときjilu[0],jilu[1],jilu[2]でhost,user,passwordに順次アクセスできます
fetchall() :
複数のメタグループを返します.すなわち、複数のレコードを返し、結果がなければ()を返します.
mysqlではNULL、pythonではNoneと明記する必要があります.
fetchall()の使い方:
cur.execute("select * from user")
select自体が取得したときに複数のデータがある場合:
cursor.fetchone():一番上の最初の結果のみを取り、('id','title')のような単一のメタグループを返し、cursorを複数回使用します.fetchone()は、空になるまで次の結果を順次取得します.
cursor.fetchall():すべての結果が返され、2 Dメタグループが返されます(('id','title'),('id','title'))、
select自体が1つのデータしか取得していない場合:
cursor.fetchone():結果は1つだけ返され、('id','title')のような単一のメタグループが返されます.
cursor.fetchall():すべての結果も返され、2 Dメタグループ(たとえば('id','title'))、
python mysqlでfetchallまたはfetchoneを使用する場合、総合的に言えばfetchallは2次元メタグループ(メタグループにメタグループが含まれている)を返し、fetchoneは1次元メタグループのみを返します