MySQL を操作して銀行振込操作をシミュレートする Python の簡単な例
この記事では、簡単な銀行振込操作をシミュレートするために MySQL を操作するための Python を主に紹介します。 pip install インストールパッケージ
2. Python で一般的なデータベースプログラムを書くための API 仕様 (1)、データベース接続オブジェクト接続、Python クライアントとデータベース間のネットワーク接続を確立します、作成メソッドは MySQLdb.Connect (パラメータ)
パラメータは次の 6 つです: Host (MySQL サーバーのアドレス、通常は 127.0.0.1) PORT (MySQL サーバーのポート番号)
User (ユーザー名)PASSWD (パスワード)
DB (データベース名)charset 接続メソッド:cursor() は接続を使用し、カーソルを返します
Close() 接続を閉じます
(2)、データベース カーソル オブジェクト カーソル、クエリの実行と結果の取得に使用されます
メソッド:execute (op[,args ]) データベース クエリとコマンドを実行します
use using using using through out through out through out' s through ' s ‐ through ‐ ‐‐‐‐ および を実行して結果を取得します
残りの行をすべて集約します
rowcount 数値最新の実行によって返された行数または影響を受ける行の数
3. 簡単なコマンド:
select クエリデータ: sql="select * from table name selected item"
insert データを挿入: sql="insert into table name selected item"update 変更データ: sql= " updata テーブル名 変更された項目を設定します"
delete delete data: sql = "削除された項目をテーブル名から削除"ここで は SQL コマンドのキーでもあり、通常はテーブル ヘッダー = その列を見つけるための列名です
4. トランザクション
データベースにアクセスして更新するプログラムの実行単位。実行されたコマンドをトランザクションと呼ぶことができます
トランザクションの実行:
conn.commit() トランザクションを正常に終了します conn.rollback() トランザクションを異常終了し、プログラム実行単位での継続動作にエラーが発生した場合、以前の動作に戻します。
簡単な操作プロセス: 開始 → 接続の作成 → カーソルの取得 → プログラム実行ユニット → カーソルを閉じる → 接続を閉じる → 終了
2. 銀行振込システムのコードをシミュレートします
#coding=utf-8 import sys import MySQLdb ''''' python操作MySQL数据库,模拟银行转账 ''' class Trans_for_Money(object): #初始化 类 def __init__(self,conn): self.conn = conn #### 1、检查所输入的账号是否存在 #### def check_acct_available(self,source_acctid): #使用与数据库的链接并返回游标 cursor=self.conn.cursor() try: #数据库命令 sql="select * from tr_money where acctid=%s" %source_acctid #执行命令 cursor.execute(sql) #为方便观察执行过程 print "check_acct_available:" + sql #讲结果集放入变量result中,若result不等于1,则没有这个账号,输出异常 result=cursor.fetchall() if len(result)!=1: raise Exception("账号%s不存在" %source_acctid) finally: #若过程出现问题,仍需要关闭游标对象 cursor.close() #### 2、检查减款人余额是否充足,方法与上一个函数一样,只是多加了一个money参数 ### def has_enough_money(self,source_acctid,money): cursor=self.conn.cursor() try: sql="select * from tr_money where acctid=%s and money>%s" %(source_acctid,money) cursor.execute(sql) print "has_enough_money:" + sql result=cursor.fetchall() if len(result)!=1: raise Exception("账号%s余额不足" %source_acctid) finally: cursor.close() #### 3、减款操作 ### def reduce_money(self,source_acctid,money): cursor=self.conn.cursor() try: #数据库命令,减去对应减款人的金额数 sql="update tr_money set money=money-%s where acctid=%s" %(money,source_acctid) cursor.execute(sql) print "reduce_money:" + sql #操作的execute()数据行数不等于1则减款失败 if cursor.rowcount!=1: raise Exception("账号%s减款失败" %source_acctid) finally: cursor.close() #### 4、收款操作,与减款方法相同 ### def add_money(self,target_acctid,money): cursor=self.conn.cursor() try: sql="update tr_money set money=money+%s where acctid =%s" %(money,target_acctid) cursor.execute(sql) print "add_money:" + sql if cursor.rowcount!=1: raise Exception("账号%s收款失败" %target_acctid) finally: cursor.close() #### 5、分别传入参数,代入上方函数,执行操作 ### def trans_for(self,source_acctid,target_acctid,money): try: self.check_acct_available(source_acctid) self.check_acct_available(target_acctid) self.has_enough_money(source_acctid,money) self.reduce_money(source_acctid,money) self.add_money(target_acctid,money) #提交当前事务 self.conn.commit() except Exception as e: #若出错,回滚当前事务 self.conn.rollback() raise e if __name__=="__main__": # source_acctid=sys.argv[1] # target_acctid=sys.argv[2] # money=sys.argv[3] #建立与数据库的链接 conn = MySQLdb.Connect( host='127.0.0.1', port=3306, user='root', passwd='12345678', db='tt', charset='utf8' ) #手动输入减款人、收款人、转款数 source_acctid=raw_input("请输入减款人: ") target_acctid=raw_input("请输入收款人: ") money=raw_input("请输入转款数: ") #将参数传入类中 tr_money=Trans_for_Money(conn) try: tr_money.trans_for(source_acctid,target_acctid,money) except Exception as e: print"出现问题:"+str(e) finally: conn.close() #关闭链接
なぜなら、教育ビデオで使用されている IDE は MyEclipse で、最後にパラメーターを入力するために run.Configuration を使用し、pycharm を使用しているためです。つまり、私が愚かで見つからないか、実際には存在しません。
そこで、実行時にパラメータを入力するために raw_input() を使用することにしました
実際、sys.argv[ ] を理解しようと試みましたが、まだ明確に理解できません。
2. mysql_Exceptions.IntegrityError: (1062、「キー 'PRIMARY' のエントリ '7' が重複しています」)
このエラーは、挿入したいデータがデータベース内にすでに存在していることを意味します。独自のプログラムの操作に矛盾はありますか
3. テーブルの作成時または値の入力時に MySql エラーが発生しました: 1170-BLOB/TEXT の列 'name' がキーの長さのないキー仕様で使用されています
エラー メッセージは、BLOB です。または TEXT フィールドが指定されていないキー長を使用しています。 キー
解決策: 他の主キーを設定するか、データ形式を varchar に変更します
詳しい説明 URL: http://myhblog1989.blog.163.com/blog/static/183225376201110875818884/
4. TypeError: 'post' はこの関数では無効なキーワード引数です
エラーの原因: TypeError: "post" はこの関数では無効なパラメータです
この質問はあまりにも間違っており、私は言葉を失いました。 "post"=' 3306' の代わりに "port"=3306 と書きました
5, 1054, "Unknown columns 'acctid' in 'where 句'
エラーの原因: "acctid" 列がwhere句
あはは、前回の間違いで頭の中の水分が抜けていないです...
さらに、もう一つ間違いがあります、それは控除の手入力です。受取人が文字または漢字に設定されている場合、検索できません
テーブル作成時のコードまたはデータベースが原因である可能性があります。設定の問題は、私が文字変換とデータベースに関してまだ初心者であることを意味します。ファイティング!
7. MySQL データベースを起動します
コンピューター→右クリック→管理→サービスとアプリケーション→サービス→MySQL を右クリック→開始
4.具体的な実行表示
1.データベースの tr_money テーブル
2. コードを実行し、減算者、受取人、送金金額を入力して
3 を実行すると、結果はコード内に特別に出力された操作プロセス表示になります
4. 実行後のデータベース tr_money テーブルのステータス
概要
以上がMySQL を操作して銀行振込操作をシミュレートする Python の簡単な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Beegoormフレームワークでは、モデルに関連付けられているデータベースを指定する方法は?多くのBEEGOプロジェクトでは、複数のデータベースを同時に操作する必要があります。 Beegoを使用する場合...

XMLをPDFに直接変換するアプリケーションは、2つの根本的に異なる形式であるため、見つかりません。 XMLはデータの保存に使用され、PDFはドキュメントを表示するために使用されます。変換を完了するには、PythonやReportLabなどのプログラミング言語とライブラリを使用して、XMLデータを解析してPDFドキュメントを生成できます。

Protobufの文字列定数列挙を定義する問題Protobufを使用する場合、列挙タイプを文字列定数に関連付ける必要がある状況に遭遇することがよくあります...

小さなXMLファイルの場合、注釈コンテンツをテキストエディターに直接置き換えることができます。大きなファイルの場合、XMLパーサーを使用してそれを変更して、効率と精度を確保することをお勧めします。 XMLコメントを削除するときは注意してください。コメントを維持すると、通常、コードの理解とメンテナンスが役立ちます。高度なヒントは、XMLパーサーを使用してコメントを変更するためのPythonサンプルコードを提供しますが、特定の実装を使用するXMLライブラリに従って調整する必要があります。 XMLファイルを変更する際のエンコード問題に注意してください。 UTF-8エンコードを使用して、エンコード形式を指定することをお勧めします。

XMLコンテンツを変更するには、ターゲットノードの正確な検出が必要であるため、プログラミングが必要です。プログラミング言語には、XMLを処理するための対応するライブラリがあり、APIを提供して、データベースの運用などの安全で効率的で制御可能な操作を実行します。

Mobile XMLからPDFへの速度は、次の要因に依存します。XML構造の複雑さです。モバイルハードウェア構成変換方法(ライブラリ、アルゴリズム)コードの品質最適化方法(効率的なライブラリ、アルゴリズムの最適化、キャッシュデータ、およびマルチスレッドの利用)。全体として、絶対的な答えはなく、特定の状況に従って最適化する必要があります。

ほとんどのテキストエディターを使用して、XMLファイルを開きます。より直感的なツリーディスプレイが必要な場合は、酸素XMLエディターやXMLSPYなどのXMLエディターを使用できます。プログラムでXMLデータを処理する場合、プログラミング言語(Pythonなど)やXMLライブラリ(XML.ETREE.ELEMENTTREEなど)を使用して解析する必要があります。

XML画像を変換するには、最初にXMLデータ構造を決定し、次に適切なグラフィカルライブラリ(PythonのMatplotlibなど)とメソッドを選択し、データ構造に基づいて視覚化戦略を選択し、データのボリュームと画像形式を検討し、バッチ処理を実行するか、効率的なライブラリを使用して、最終的にPNG、JPEG、またはSVGに応じて保存します。
