この記事では、簡単な銀行振込操作をシミュレートするために 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() #关闭链接3. 問題解決
なぜなら、教育ビデオで使用されている 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 サイトの他の関連記事を参照してください。

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。

Pythonは迅速な開発とデータ処理に適していますが、Cは高性能および基礎となる制御に適しています。 1)Pythonは、簡潔な構文を備えた使いやすく、データサイエンスやWeb開発に適しています。 2)Cは高性能で正確な制御を持ち、ゲームやシステムのプログラミングでよく使用されます。

Pythonを学ぶのに必要な時間は、人によって異なり、主に以前のプログラミングの経験、学習の動機付け、学習リソースと方法、学習リズムの影響を受けます。現実的な学習目標を設定し、実用的なプロジェクトを通じて最善を尽くします。

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

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