リレーショナルモデルに基づいてリレーショナルデータベースが、2次元のテーブルを格納することにより、リレーショナルモデルは、リレーショナルデータベースがありますようにSQLiteのは、MySQL、OracleやSQL Serverの、DB2とを。
MySQLデータベースストレージ
1. Connectデータベース
インポートpymysql #接続対象のMySQL DBことconnect()メソッドの肯定 DB = pymysql.connect(ホスト= ' ローカルホスト'、=ユーザー' ルート'、パスワード= ' rr123456 '、= 3306ポート) #は、カーソルを使用してMySQLカーソルを得、実行するSQL文の カーソル= db.cursor() #は、新しいデータベースを作成し、呼び出しがexecute()メソッドが実行される (cursor.executeを' データベーススパイダーDEFAULT CHARACTER SET UTF8 CREATE ' ) #近いデータベース db.Closeを()
テーブルを作成します。2.
インポートpymysql デシベル = pymysql.connect(ホスト= ' localhostの'、ユーザー= ' ルート'、パスワード= ' rr123456を'、ポート= 3306、DB = ' クモ' ) カーソル = db.cursor() #创建表 のsql = " CREATE TABLE IFは、NOTユーザー(ID VARCHAR(255)NOT NULL、名前VARCHAR(255)NOT NULL、年齢INT NOT NULL、PRIMARY KEY(ID))EXISTS " cursor.execute(SQL) )(db.close を
3.データの挿入
インポートpymysql DB = pymysql.connect(ホスト= ' localhostの'、=ユーザー' ルート'、パスワード= ' rr123456 '、= 3306ポート、DB = ' スパイダー' ) カーソル = db.cursor() SQL = " INSERT INTOユーザ(上記のID、名前、年齢)の値(「001」以上、「XXX」、18)「 試し: cursor.execute(SQL) db.commit() #真のステートメントは、メソッドに提出される、データ上の削除データベースの挿入、更新を行いこれらは、呼び出す必要があります 除く: db.rollback() )(db.Close を
動的挿入:
インポートpymysql DB = pymysql.connect(ホスト= ' はlocalhost '、ユーザ= ' ルート'、パスワード= ' rr123456 '、ポート= 3306、DB = ' クモ' ) カーソル = db.cursor() データ = { " ID ":" 002 " 、 " 名":' SS ' 、 " 年齢":20 } テーブル = 'ユーザー' キー = ' 、' .join(data.keys()) 値 = ' 、' .join([ ' %S ' ] * lenは(データ)) SQL = ' INSERT INTO {テーブル}({キー})値({値})' .format(表=テーブル、キー=キー、値= 値)を 試して: もしcursor.execute(SQL、タプル(data.values())): プリント(' 成功' ) db.commit( ) を除く: 印刷(' 失败') db.rollback() ()db.close
4.データの更新
輸入pymysql デシベル = pymysql.connect(ホスト= ' localhostの'、ユーザー= ' ルート'、パスワード= ' rr123456 '、ポート= 3306、DB = ' クモ' ) カーソル = db.cursor() SQL = " UPDATEユーザーのSET年齢= 25 WHERE ID = "001" " 試し: cursor.execute(SQL) db.commit() を除く: db.rollback() db.close()
データが存在する場合、重複排除および動的更新は、更新されたデータは、インサート場合は存在しません。
インポートpymysql DB = pymysql.connect(ホスト= ' はlocalhost '、ユーザ= ' ルート'、パスワード= ' rr123456 '、ポート= 3306、DB = ' クモ' ) カーソル = db.cursor() データ = { " ID ":" 002 " 、 " 名":' SS ' 、 " 年齢":40 } テーブル = 'ユーザー' キー = ' 、' .join(data.keys()) 値 = ' 、' .join([ ' %S ' ] * lenは(データ)) SQL = ' INSERT INTO {テーブル}({キー})値({値})ON DUPLICATE KEY UPDATE ' .format(表=テーブル、キー=キー、値= 値)を 更新 = ' 、' .join([ " {キー} =%S " .format(キー=キー)のためにキーでデータ]) 、SQL + = アップデート 試し: 場合 cursor.execute(SQL、タプル(data.values())* 2 ): プリント(' 成功' ) db.commit() を除く: プリント(' 失败' ) db.rollback()は ()db.close
5. [削除]
輸入pymysql デシベル = pymysql.connect(ホスト= ' localhostの'、ユーザー= ' ルート'、パスワード= ' rr123456 '、= 3306ポート、DB = ' クモ' ) カーソル = db.cursor() テーブル = ' ユーザー' のcond = ' 年齢> 30 ' SQL = ' {テーブル} {COND} FROM DELETE ' .format(表=表、COND = COND) トライ: cursor.execute(SQL) db.commit() 除く: db.rollback() ()をdb.close
6.クエリ
輸入pymysql デシベル = pymysql.connect(ホスト= ' localhostの'、ユーザー= ' ルート'、パスワード= ' rr123456 '、= 3306ポート、DB = ' クモ' ) カーソル = db.cursor() テーブル = ' ユーザー' のcond = ' 年齢> 20 ' SQL = ' SELECT * FROM {テーブル} WHERE {COND} ' .format(表=表、COND = COND) 試す: cursor.execute(SQL) 印刷(cursor.rowcount) #クエリ数を求める 印刷(cursor.fetchone()) #のタプルの形式でクエリを結果を示す 印刷(cursor.fetchall()) #のすべてのクエリ、)(、fetchAllの上記のクエリの自由となっています内部その結果タプル印象の形で、次のものへのポインタを取得した後、クエリ結果を指すようにポインタをオフセット。代わりにどちらかの高コスト、プラスfetchone利用可能ながら、()の大多数は、サイクルタイムは、ポインタがオフセットした場合 を除き: db.rollback() )(db.Close を
7.ケース