-
虽然大家可能在python2.x中用习惯了mysqldb,但是在python3.x中已经不支持那个组件了。取而代之的是pymysql Python 3.6.1 安装pymysql 1.需要安装 wheel 安装wheel之后就可以安装本地 *.whl安装包 # pip install wheel 2.把pymysql下载到本地 地址:https://pypi.python.org/pypi/PyMySQL#downloads 3.进入本地包的目录进行安装 # pip install PyMySQL-0.7.11-py2.py3-none-any.whl 4.完成测试下 # import pymysql; # print(pymysql); 会看到pymysql的模块信息查看全部
-
银行转账实例:账户A给账户B转账操作
# coding:utf8 import sys import MySQLdb def check_acct_available(self, acctid): cursor = self.conn.cursor() try: sql = "select * from account where acctid=%s" % acctid cursor.execute(sql) print "check_acct_available:" + sql rs = cursor.fetchall() #把结果集放入变量 if len(rs) != 1: raise Exception("账号%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("账号%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 rs = cursor.fetchall() #把结果集放入变量 if cursor.rowcount != 1: #检验update看影响多少条数据!! raise Exception("账号%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 rs = cursor.fetchall() #把结果集放入变量 if cursor.rowcount != 1: #检验update看影响多少条数据!! raise Exception("账号%s加款失败" % acctid) finally: cursor.close() class TransferMoney(object): def __init__(self, conn): #类的构造函数,传入参数conn self.conn = conn def transfer(self, source_acctid, target_acctid, money): #实现transfer方法 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] #设置三个参数:付款人id,收款人id,转账金额 target_acctid = sys.argv[2] money = sys.argv[3] conn = MySQLdb.Connect(host='127.0.0.1', user='root', passwd='123456', port=3306, db='imooc') #创建数据库的connection tr_money = TransferMoney(conn) #创建转账操作的对象,使用TransferMoney类来实现 try: tr_money.transfer(source_acctid, target_acctid, money) except Exception as e: print "出现问题:" + str(e) finally: #无论如何,关闭连接 conn.close()
查看全部 -
python版本为 3.6
在命令行使用命令安装:pip install PyMySQL
然后命令行中 import pymysql正常,但是在pycharm中报错“ModuleNotFoundError: No module named 'pymysql'”
解决: 在file->setting->project:...->project Interpreter->选择安装的python.exe
另外:
查看全部 -
自顶向下,先抽像后具体是一种很好的编程方式。 事务就是一组sql操作,把所有的数据库操作放在一组try...catch...语句中,全部执行成功则commit,抛出异常就rollback 通过判断fetchall()返回结果的长度(是否等于1)来判断查询值是否存在,查询金额是否足够直接通过sql判断。 通过cursor.rowcount判断数据库操作影响的行数判断是否加款减款成功 cursor.rowcount != 1则抛出异常查看全部
-
python3.5安装PyMySQL pip install wheel https://pypi.python.org/pypi/PyMySQL#downloads 下载文件 F:\pycharm>pip install PyMySQL-0.7.9-py3-none-any.whl 测试 import pymysql conn = pymysql.connect(host='127.0.0.1', port=3306,user='root',passwd='1',db='mysql',charset='UTF8') cur = conn.cursor() cur.execute("select version()") for i in cur: print(i) cur.close() conn.close()查看全部
-
python 3.4 下直接输入 pip install PyMySQL 就行 时间: 2015-08-20 0 暮雲春樹 暮雲春樹 Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import pymysql >>> pymysql.install_as_MySQLdb() >>> import MySQLdb >>>查看全部
-
i/u/d操作数据库流程查看全部
-
https://www.python.org/dev/peps/pep-0249
查看全部 -
两账户转账查看全部
-
课程总结查看全部
-
MySQLdb.Connect(参数) host port user passwd db charset cursor() 使用该连接创建返回游标 import MySQLdb conn=MySQLdb.Connect(host='127.0.0.1',port=3306,user='root',passwd='123456',db='imooc',charset='utf-8') cursor=conn.cursor() print conn print cursor cursor.close() conn.close()查看全部
-
__name__是指示当前py文件调用方式的方法。如果它等于"__main__"就表示是直接执行,如果不是,则用来被别的文件调用,这个时候if就为False,那么它就不会执行最外层的代码了。 比如你有个Python文件里面 def XXXX(): #body print "asdf" 这样的话,就算是别的地方导入这个文件,要调用这个XXXX函数,也会执行print "asdf",因为他是最外层代码,或者叫做全局代码。但是往往我们希望只有我在搜索执行这个文件的时候才运行一些代码,不是的话(也就是被调用的话)那就不执行这些代码,所以一般改为 def XXXX(): #body if __name__="__main__": print "asdf"查看全部
-
事务、如何使用事务查看全部
-
事务的特性,怎样使用事务查看全部
-
更新数据库查看全部
举报
0/150
提交
取消