Pythonの道路[二十から五]:pymysqlモジュールのデータベース

高度なデータベース

、pymysqlモジュール

PythonのMySQLのモジュールの動作、及びその使用方法とほぼ同じのMySQLdb PY2にpymysql。

二、pymysqlモジュールの取り付け

pymysqlをインストールするPIP

SQL文の第三に、実装

_ * _#コーディング:_ * _ 8 UTF- 著者:サイモン
#日時:2019年9月27日午前8時51 
#ソフトウェア:PyCharm 

インポートpymysql 

コネティカット= pymysql.connect(ホスト= '127.0.0.1'、= 3306ポートユーザ= 'ルート'は、passwd = '123456'、DBは= 'lesson54' 

カーソル= conn.cursor()

データ結果カーソル= conn.cursor(カーソル= pymysql.cursors.DictCursor) //# データ・タイプの変更を取得しますデフォルトでは、タプルで辞書に変更することができる

#1 = SQLの"テストテーブルを作成する(INT ID、名前VARCHAR(20である))、" 
#cursor.execute(SQL)
'、#cursor.execute(「INSERT INTOテストVALUES(3 simon1 ')、(4' zhurui1「) ")

// クエリ row_affected = cursor.execute(" SELECT *テスト"FROM  #=ワンcursor.fetchone() #=すべてのカーソル。fetchAllの()  #多くの= cursor.fetchmany(2)
 プリント(cursor.fetchone())プリント(cursor.fetchall())プリントモバイルの##のcursor.scrollの現在の位置に対して(cursor.fetchmany())#scroll#cursor.scroll(-1、MODE = "相対的"() 1、モード= "絶対") #絶対相対位置conn.commit()// SQLを実行、最初に提出cursor.close()// 閉じる端末#1はconn.close()接続を閉じる//                

第四に、トランザクション

4.1 Transactionコマンド

論理演算の一組だけのトランザクション、いずれかのすべての成功またはすべて失敗し、操作のセットからなる各ユニット。

オープンデータベーストランザクションコマンド

-         トランザクション開始オープン情勢に
-         ロールバックが戻って前の位置にロールコミット、(のみ更新文を削除、挿入ロールバック)SQL文の指定を取り消すつまり、トランザクションをロールバックする
-         トランザクションをコミットするコミット、トランザクションが保存されていないコミットされて
- - 
-セーブポイントの保存ポイントは、トランザクションが一時的なプレースホルダを設定することを、あなたはそれをバックオフ(と異なるトランザクション全体のロールバック)を公開することができます  

例を転送します。

MySQLの>(ID int型、名前のVARCHAR(20テーブルのアカウントを作成してダブルバランス、)); 
クエリOK、0行が影響を受ける(0.03 秒)

のMySQL>試験アカウント値(1、 "朱锐"、16000に挿入)。
ERROR 1064(42000):あなたは、エラー持ってあなたのSQL構文を、手動チェック の近くに使用する権利構文についてはMySQLサーバのバージョンに対応する「accouの NT値(1、 『朱锐』、16000)」行1での MySQLの>は16000、1、「朱锐」(アカウント値に挿入します);  クエリOK、影響を受けた1行(0.01 秒)のMySQL>アカウント値(2、 "サイモン"、46000に挿入)。クエリOK、影響を受けた1行(0.01 秒)のMySQL> SELECT * FROMからアカウント; + ------ + -------- + --------- + | ID | 名前| バランス| + ------ + -------- + --------- + | 1 | 朱锐| 16000 | | 2 | サイモン| 46000 | セット内の+ ------ + --------- + --------- + 2行(0.00 秒)のMySQL> トランザクションを開始します。//开启事务クエリOK、影響を受けた0行(0.00 秒)のMySQL> のMySQL> MySQLの> ID = 1アカウントセットバランス=バランス-5000を更新します//转账クエリOKは、1行影響(0.01 秒)行が一致した:1変更:1つの警告:0 MySQLを> SELECT * FROM アカウント。+ ------ + -------- + --------- + | ID | 名前| バランス| + ------ + -------- + --------- + | 1 | 朱锐| 11000 | | 2 | サイモン| 46000 | セット内の+ ------ + --------- + --------- + 2行(0.00 秒)のMySQL>

ロールバックロールバック:

MySQLの> ロールバック。
クエリOK、影響を受けた0行(0.01 秒)

からのmysql> SELECT * FROM アカウント。
+ ------ + -------- + --------- + 
| ID | 名前| バランス| 
+ ------ + -------- + --------- + 
| 1 | 朱锐| 16000 | 
| 2 | サイモン| 46000 | 
+ ------ + --------- + --------- + 
集合における2行(0.00 秒)
 のMySQL>

トランザクションをコミットコミットします。

MySQLの> SELECT * FROM アカウント。
+ ------ + -------- + --------- + 
| ID | 名前| バランス| 
+ ------ + -------- + --------- + 
| 1 | 朱锐| 11000 | 
| 2 | サイモン| 46000 | 
+ ------ + --------- + --------- + 
集合における2行(0.00 秒)

のMySQL> ID = 2アカウントセットバランス=バランス+ 5000を更新します
クエリOKは、1行影響(0.00 秒) 行が一致した:1変更:1つの 警告:0 
 MySQLを> SELECT * FROM アカウント。+ ------ + -------- + --------- + | ID | 名前| バランス| + ------ + -------- + --------- + | 1 | 朱锐| 11000 | | 2 | サイモン| 51000 | セット内の+ ------ + --------- + --------- + 2行(0.00 秒)のMySQL>コミット; クエリOK、影響を受けた0行(0.00 秒)mysqlの>

セーブポイント:

テーブルTEST2(ID INT PRIMARY KEYのAUTO_INCREMENT、名前VARCHAR(20))、エンジン=作成のInnoDBと、
TEST2。INSERT INTO(名)VALUE( "サイモン" )、 "zhurui" )、
                              "caiyunjie" )。


 トランザクションを開始。 TEST2に挿入(名)の値( 'zhuruirui' );  SELECT * FROM TEST2。コミット; - 保留開始トランザクション点。TEST2に挿入(名)の値( 'huozhu' ); セーブポイントinsert_wu; SELECT * FROM TEST2。ID = 4 TEST2から削除しますセーブポイントdelete1; SELECT * FROM TEST2。ID = 1 TEST2から削除しますセーブポイントdelete2; SELECT * FROM TEST2。delete1にロールバック。TEST2; セーブポイント

方法でトランザクション4.2のpythonを開始したコールデータベース

輸入pymysql 

#添加数据
CONN = pymysql.connect(ホスト= '127.0.0.1'、= 3306ポート、ユーザー= 'ルート'は、passwd = ''、デシベル= 'テスト' 
カーソル= conn.cursor() してみてください insertSQL0 = "INSERT INTO aCCOUNT2(名前、バランス)値( 'caiyunjie'、60000)" insertSQL1 = "UPDATEがaccount2設定バランス=バランス-12700名=「サイモン" セットバランス=バランス+ 12700名account2 insertSQL2は= "UPDATE = 'zhurui'」カーソル= conn.cursor()cursor.execute(insertSQL0)conn.commit()cursor.execute(insertSQL1)上げる以外例外cursor.executeを(insertSQL2)cursor.close()conn.commit()のような例外E:conn.rollback()conn.commit()カーソル。近い()はconn.close()



おすすめ

転載: www.cnblogs.com/hackerer/p/11596618.html