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)

ホットトピック









and:mysql:Alter table_name add column_name data_type; postgresql:column column_name data_typeを変更するcolumn column_name datape; oracle:alter table_name add(column_name data_type);

データの専門家として、さまざまなソースから大量のデータを処理する必要があります。これは、データ管理と分析に課題をもたらす可能性があります。幸いなことに、AWS GlueとAmazon Athenaの2つのAWSサービスが役立ちます。

SQLグラフィックスの列を追加するツール:追加する列を選択するテーブルを選択します。 [テーブルを変更]または同様のオプションを右クリックして選択します。新しい列のプロパティ(名前、データ型、長さ、または空のかどうか)を定義します。該当する場合は、新しい列のデフォルト値を指定します。データエラーを回避するには、適切なデータ型を選択します。意味のある列名を使用します。大きなテーブルで列の追加操作を実行する際のパフォーマンスへの影響を考慮してください。データの損失を防ぐために、操作の前に常にデータベースをバックアップしてください。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

さまざまなデータベースシステムに列を追加するための構文は大きく異なり、データベースごとに異なります。例:MySQL:Tableユーザーを変更する列メールVarchar(255); POSTGRESQL:TABLEユーザーを変更する列メールvarchar(255)null noll inquine; oracle:alter tableユーザーはメールvarchar2(255); sql server:tableユーザーを追加するメールvarchを追加します

SQLデータベースの構築には、DBMSの選択が必要です。 DBMSのインストール。データベースの作成。テーブルの作成;データの挿入;データの取得。データの更新。データの削除。ユーザーの管理。データベースのバックアップ。

SQL(Structured Query Language)は、データベースの作成、管理、およびクエリに使用されるプログラミング言語です。主な機能には、データベースとテーブルの作成、データの挿入、更新、削除、結果の結果とフィルタリング機能、集約関数、テーブルの結合、サブQUERIES、オペレーター、機能、キーワード、データ操作/定義/コントロール言語、接続タイプ、クエリ最適化、セキュリティ、ツール、リソース、リソース、バージョン、一般的なエラー、ロバット、ロバット、ドバギングのエリック。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。
