Python 数据库连接
生活随笔
收集整理的這篇文章主要介紹了
Python 数据库连接
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#!/usr/bin/env python
#-*-coding:utf-8-*-
#異常處理,with的使用,
class Mycontex(object):def __init__(self,name):self.name=namedef __enter__(self):print("__enter__")return selfdef do_self(self):print('do_self')def __exit__(self,exc_type,exc_value,traceback):print('__exit__')print("Error: ",exc_type," info:",exc_value)if __name__=='__main__':with Mycontex('test context') as f:print(f.name)f.do_self()#!/usr/bin/env python
#-*-coding:utf-8-*-
import MySQLdb
#連接數(shù)據(jù)庫
conn=MySQLdb.Connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='imooc',charset='utf8')
cursor=conn.cursor()sql_insert="insert into user(userid,username) values(10,'name10')"
sql_update="update user set username='name91' where userid=9"
sql_delete="delete from user where userid<3"
#異常處理
try:cursor.execute(sql_insert)print(cursor.rowcount)cursor.execute(sql_update)print(cursor.rowcount)cursor.execute(sql_delete)print(cursor.rowcount)conn.commit()
except Exception as e:print(e)#回滾事物conn.rollback()cursor.close()
conn.close()#!/usr/bin/env python
#-*-coding:utf-8-*
#銀行轉(zhuǎn)賬模擬
import sys
import MySQLdbclass TransferMoney(object):def __init__(self,conn):self.conn=conn#檢查用戶是否存在def check_acct_available(self,acctid):cursor=self.conn.cursor()try:sql="select * from account where acctid=%s" % acctidcursor.execute(sql)print("check_acct_available:"+sql)rs=cursor.fetchall()if len(rs)!=1:raise Exception("賬號(hào)%s不存在" % acctid)finally:cursor.close()#檢查用戶是否有足夠的錢def has_enough_money(self,acctid,money):cursor=self.conn.cursor()try:sql="select * from account where acctid=%s and money>=%s" % (acctid,money)cursor.execute(sql)print("has_enough_money:"+sql)rs=cursor.fetchall()if len(rs)!=1:raise Exception("賬號(hào)%s沒有足夠的錢" % acctid)finally:cursor.close()#用戶減少的錢def reduce_money(self,acctid,money):cursor=self.conn.cursor()try:sql="update account set money=money-%s where acctid=%s" % (money,acctid)cursor.execute(sql)print("reduce_money:"+sql)if cursor.rowcount!=1:raise Exception("賬號(hào)%s減款失敗" % acctid)finally:cursor.close()def add_money(self,acctid,money):cursor=self.conn.cursor()try:sql="update account set money=money+%s where acctid=%s" % (money,acctid)cursor.execute(sql)print("add_money:"+sql)if cursor.rowcount!=1:raise Exception("賬號(hào)%s加款失敗" % acctid)finally:cursor.close()def transfer(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 eif __name__=='__main__':#source_acctid=sys.argv[0]#target_acctid=sys.argv[1]#money=sys.argv[2]source_acctid=input('請(qǐng)輸入用戶')target_acctid=input('轉(zhuǎn)入用戶')money=input('轉(zhuǎn)入金額')conn=MySQLdb.Connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='imooc')tr_money=TransferMoney(conn)try:tr_money.transfer(source_acctid,target_acctid,money)except Exception as e:print('出現(xiàn)問題:'+str(e))finally:conn.close()
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)
總結(jié)
以上是生活随笔為你收集整理的Python 数据库连接的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样查找自增列主键的id
- 下一篇: Python的Pexpect库