城市直播房产教育博客汽车
快传网
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

Python连接数据库操作

3月23日 断龙塔投稿
  一、数据库基础用法
  要先配置环境变量,然后cmd安装:pipinstallpymysql1、连接MySQL,并创建wzg库引入decimal模块importpymysql连接数据库dbpymysql。connect(hostlocalhost,userroot,password1234,charsetutf8)创建一个游标对象(相当于指针)cursordb。cursor()执行创建数据库语句cursor。execute(createschemawzgdefaultcharsetutf8;)cursor。execute()fetchone获取一条数据(元组类型)print(cursor。fetchone())现在指针到了〔1〕的位置fetchall获取全部数据(字符串类型)allcursor。fetchall()foriinall:print(i〔0〕)关闭游标和数据库连接cursor。close()db。close()2、创建student表,并插入数据importpymysql连接数据库,并打开wzg数据库(数据库已创建)dbpymysql。connect(hostlocalhost,userroot,password1234,charsetutf8,dbwzg)创建游标对象cursordb。cursor()try:创建student表,并执行sqlcreatetablestudent(SNOchar(10),SNAMEvarchar(20)NOTNULL,SSEXvarchar(1),primarykey(SNO))defaultcharsetutf8;cursor。execute(sql)插入一条数据,并执行insertsqlinsertintostudentvalues(200303016,王智刚,男),(20030001,小明,男)cursor。execute(insertsql)将数据提交给数据库(加入数据,修改数据要先提交)db。commit()执行查询语句cursor。execute(selectfromstudent)打印全部数据allcursor。fetchall()foriinall:print(i)发生错误时,打印报错原因exceptExceptionase:print(e)无论是否报错都执行finally:cursor。close()db。close()
  数据库中char和varchar的区别:
  char类型的长度是固定的,varchar的长度是可变的。
  例如:存储字符串abc,使用char(10),表示存储的字符将占10个字节(包括7个空字符),
  使用varchar(10),表示只占3个字节,10是最大值,当存储的字符小于10时,按照实际的长度存储。二、项目:银行管理系统
  完成功能:1。查询2。取钱3。存钱4。退出练习:创建信息表,并进行匹配
  1、创建数据库为(bank),账户信息表为(account)
  accountid(varchar(20))
  Accountpasswd(char(6))
  Money(decimal(10,2))
  001hr123456hr1000。00
  002hr456789hr5000。00
  2、拓展:进行账号和密码的匹配
  请输入账号:001
  请输入密码:123456
  selectfromaccountwhereaccountid001andAccountpasswd123456
  ifcursor。fetchall():
  登录成功
  else:
  登录失败importpymysql连接数据库dbpymysql。connect(hostlocalhost,userroot,password1234,charsetutf8)cursordb。cursor()创建bank库cursor。execute(createdatabasebankcharsetutf8;)cursor。execute()try:创建表sqlcreatetableaccount(accountidvarchar(20)NOTNULL,accountpasswdchar(6)NOTNULL,moneydecimal(10,2),primarykey(accountid));cursor。execute(sql)插入数据insertsqlinsertintoaccountvalues(001,123456,1000。00),(002,456789,5000。00)cursor。execute(insertsql)db。commit()查询所有数据cursor。execute(selectfromaccount)allcursor。fetchall()foriinall:print(i)输入账号和密码zinput(请输入账号:)minput(请输入密码:)从account表中进行账号和密码的匹配cursor。execute(selectfromaccountwhereaccountidsandaccountpasswds,(z,m))如果找到,则登录成功ifcursor。fetchall():print(登录成功)else:print(登录失败)exceptExceptionase:print(e)finally:cursor。close()db。close()1、进行初始化操作importpymysql创建bank库CREATESCHEMASQLcreateschemabankcharsetutf8;创建account表CREATETABLESQLcreatetableaccount(accountidvarchar(20)NOTNULL,accountpasswdchar(6)NOTNULL,decimal用于保存精确数字的类型,decimal(10,2)表示总位数最大为12位,其中整数10位,小数2位moneydecimal(10,2),primarykey(accountid))defaultcharsetutf8;创建银行账户CREATEACCOUNTSQLinsertintoaccountvalues(001,123456,1000。00),(002,456789,5000。00);初始化definit():try:DBpymysql。connect(hostlocalhost,userroot,password1234,charsetutf8)cursor1DB。cursor()cursor1。execute(CREATESCHEMASQL)DBpymysql。connect(hostlocalhost,userroot,password1234,charsetutf8,databasebank)cursor2DB。cursor()cursor2。execute(CREATETABLESQL)cursor2。execute(CREATEACCOUNTSQL)DB。commit()print(初始化成功)exceptExceptionase:print(初始化失败,e)finally:cursor1。close()cursor2。close()DB。close()不让别人调用ifnamemain:init()2、登录检查,并选择操作importpymysql定义全局变量为空DBNone创建Account类classAccount():传入参数definit(self,accountid,accountpasswd):self。accountidaccountidself。accountpasswdaccountpasswd登录检查defcheckaccount(self):cursorDB。cursor()try:把输入账号和密码进行匹配(函数体内部传入参数用self。)SQLselectfromaccountwhereaccountidsandaccountpasswds(self。accountid,self。accountpasswd)cursor。execute(SQL)匹配成功返回True,失败返回Falseifcursor。fetchall():returnTrueelse:returnFalseexceptExceptionase:print(错误原因:,e)finally:cursor。close()查询余额defquerymoney取钱defreducemoney存钱defaddmoneydefmain():定义全局变量globalDB连接bank库DBpymysql。connect(hostlocalhost,userroot,passwd1234,databasebank)cursorDB。cursor()输入账号和密码fromaccountidinput(请输入账号:)fromaccountpasswdinput(请输入密码:)输入的参数传入给Account类,并创建account对象accountAccount(fromaccountid,fromaccountpasswd)调用checkaccount方法,进行登录检查ifaccount。checkaccount():chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)当输入不等于4的时候执行,等于4则退出whilechoose!4:查询ifchoose1:print(111)取钱elifchoose2:print(222)存钱elifchoose3:print(333)上面操作完成之后,继续输入其他操作chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)else:print(谢谢使用!)else:print(账号或密码错误)DB。close()main()3、加入查询功能
  存在银行里的钱可能会产生利息,所以需要考虑余额为小数的问题,需要用到decimal库importpymysql引入decimal模块importdecimalDBNoneclassAccount():definit(self,accountid,accountpasswd):self。accountidaccountidself。accountpasswdaccountpasswd登录检查defcheckaccount(self):cursorDB。cursor()try:SQLselectfromaccountwhereaccountidsandaccountpasswds(self。accountid,self。accountpasswd)cursor。execute(SQL)ifcursor。fetchall():returnTrueelse:returnFalseexceptExceptionase:print(错误,e)finally:cursor。close()查询余额defquerymoney(self):cursorDB。cursor()try:匹配账号密码,并返回moneySQLselectmoneyfromaccountwhereaccountidsandaccountpasswds(self。accountid,self。accountpasswd)cursor。execute(SQL)moneycursor。fetchone()〔0〕如果账户有钱就返回金额,没钱返回0。00ifmoney:返回值为decimal类型,quantize函数进行四舍五入,0。00表示保留两位小数returnstr(money。quantize(decimal。Decimal(0。00)))else:return0。00exceptExceptionase:print(错误原因,e)finally:cursor。close()defmain():globalDBDBpymysql。connect(hostlocalhost,userroot,passwd1234,charsetutf8,databasebank)cursorDB。cursor()fromaccountidinput(请输入账号:)fromaccountpasswdinput(请输入密码:)accountAccount(fromaccountid,fromaccountpasswd)ifaccount。checkaccount():chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)whilechoose!4:查询ifchoose1:调用querymoney方法print(您的余额是s元account。querymoney())取钱elifchoose2:print(222)存钱elifchoose3:print(333)chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)else:print(谢谢使用)else:print(账号或密码错误)DB。close()main()4、加入取钱功能
  取钱存钱要用update来执行数据库,还要注意取钱需要考虑余额是否充足的问题importpymysqlimportdecimalDBNoneclassAccount():definit(self,accountid,accountpasswd):self。accountidaccountidself。accountpasswdaccountpasswd登录检查defcheckaccount(self):cursorDB。cursor()try:SQLselectfromaccountwhereaccountidsandaccountpasswds(self。accountid,self。accountpasswd)cursor。execute(SQL)ifcursor。fetchall():returnTrueelse:returnFalseexceptExceptionase:print(错误,e)finally:cursor。close()查询余额defquerymoney(self):cursorDB。cursor()try:SQLselectmoneyfromaccountwhereaccountidsandaccountpasswds(self。accountid,self。accountpasswd)cursor。execute(SQL)moneycursor。fetchone()〔0〕ifmoney:returnstr(money。quantize(decimal。Decimal(0。00)))else:return0。00exceptExceptionase:print(错误原因,e)finally:cursor。close()取钱(注意传入money参数)defreducemoney(self,money):cursorDB。cursor()try:先调用querymoney方法,查询余额hasmoneyself。querymoney()所取金额小于余额则执行(注意类型转换)ifdecimal。Decimal(money)decimal。Decimal(hasmoney):进行数据更新操作SQLupdateaccountsetmoneymoneyswhereaccountidsandaccountpasswds(money,self。accountid,self。accountpasswd)cursor。execute(SQL)rowcount进行行计数,行数为1则将数据提交给数据库ifcursor。rowcount1:DB。commit()returnTrueelse:rollback数据库回滚,行数不为1则不执行DB。rollback()returnFalseelse:print(余额不足)exceptExceptionase:print(错误原因,e)finally:cursor。close()存钱defaddmoneydefmain():globalDBDBpymysql。connect(hostlocalhost,userroot,passwd1234,charsetutf8,databasebank)cursorDB。cursor()fromaccountidinput(请输入账号:)fromaccountpasswdinput(请输入密码:)accountAccount(fromaccountid,fromaccountpasswd)ifaccount。checkaccount():chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)whilechoose!4:查询ifchoose1:print(您的余额是s元account。querymoney())取钱elifchoose2:先查询余额,再输入取款金额,防止取款金额大于余额moneyinput(您的余额是s元,请输入取款金额account。querymoney())调用reducemoney方法,money不为空则取款成功ifaccount。reducemoney(money):print(取款成功,您的余额还有s元account。querymoney())else:print(取款失败!)存钱elifchoose3:print(333)chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)else:print(谢谢使用!)else:print(账号或密码错误)DB。close()main()5、加入存钱功能
  存钱功能和取钱功能相似,而且不需要考虑余额的问题,至此已完善当前所有功能importpymysqlimportdecimalDBNoneclassAccount():definit(self,accountid,accountpasswd):self。accountidaccountidself。accountpasswdaccountpasswd登录检查defcheckaccount(self):cursorDB。cursor()try:SQLselectfromaccountwhereaccountidsandaccountpasswds(self。accountid,self。accountpasswd)cursor。execute(SQL)ifcursor。fetchall():returnTrueelse:returnFalseexceptExceptionase:print(错误,e)finally:cursor。close()查询余额defquerymoney(self):cursorDB。cursor()try:SQLselectmoneyfromaccountwhereaccountidsandaccountpasswds(self。accountid,self。accountpasswd)cursor。execute(SQL)moneycursor。fetchone()〔0〕ifmoney:returnstr(money。quantize(decimal。Decimal(0。00)))else:return0。00exceptExceptionase:print(错误原因,e)finally:cursor。close()取钱defreducemoney(self,money):cursorDB。cursor()try:hasmoneyself。querymoney()ifdecimal。Decimal(money)decimal。Decimal(hasmoney):SQLupdateaccountsetmoneymoneyswhereaccountidsandaccountpasswds(money,self。accountid,self。accountpasswd)cursor。execute(SQL)ifcursor。rowcount1:DB。commit()returnTrueelse:DB。rollback()returnFalseelse:print(余额不足)exceptExceptionase:print(错误原因,e)finally:cursor。close()存钱defaddmoney(self,money):cursorDB。cursor()try:SQLupdateaccountsetmoneymoneyswhereaccountidsandaccountpasswds(money,self。accountid,self。accountpasswd)cursor。execute(SQL)ifcursor。rowcount1:DB。commit()returnTrueelse:DB。rollback()returnFalseexceptExceptionase:DB。rollback()print(错误原因,e)finally:cursor。close()defmain():globalDBDBpymysql。connect(hostlocalhost,userroot,passwd1234,charsetutf8,databasebank)cursorDB。cursor()fromaccountidinput(请输入账号:)fromaccountpasswdinput(请输入密码:)accountAccount(fromaccountid,fromaccountpasswd)ifaccount。checkaccount():chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)whilechoose!4:查询ifchoose1:print(您的余额是s元account。querymoney())取钱elifchoose2:moneyinput(您的余额是s元,请输入取款金额account。querymoney())ifaccount。reducemoney(money):print(取款成功,您的余额还有s元account。querymoney())else:print(取款失败!)存钱elifchoose3:moneyinput(请输入存款金额:)ifaccount。addmoney(money):print(存款成功,您的余额还有s元,按任意键继续(account。querymoney()))else:print(存款失败,按任意键继续)chooseinput(请输入操作:1、查询余额2、取钱3、存钱4、取卡)else:print(谢谢使用!)else:print(账号或密码错误)DB。close()main()
投诉 评论 转载

这些新规,明起实施!第一条就关乎你的钱包!速看3月即将开启,一批新规与我们的生活息息相关。2021年度个税综合所得汇算清缴启动2021年度个人所得税综合所得汇算清缴启动,办理时间为2022年3月1日至6月30日……为什么宇宙中的天体都是球形?有没有河里鹅卵石的效应?在自然界和宇宙中有三大最稳定结构:球体、三角形、三棱体,还有六大次稳定结构:椭球体(鹅卵形)、圆柱体、椭圆柱体、三棱柱、六边形、六棱柱。自然界和宇宙中之所以会存在这些最稳……英国自取其辱,宣布推迟6个月,华为5G设备拆不动了2020年,英国第一个宣布5G建设中禁止使用华为设备,还声称到2027年,将华为的所有设备在5G网络中拆除。可就在近日据外媒报道,英国当局发布了通告:减少5G无线接入网中华为设……微信要开始收费了?一年需要180元,钱袋子又被盯上了提到微信可以说是无人不知无人不晓,我们每天的工作和生活都离不开微信,据不完全统计,全球现在已经有11亿活跃的微信用户了,可以说微信成了国内一个利用率最高的APP。用户数量的增加……旗舰外观狂暴性能!腾讯红魔游戏手机6R仅2699元起作为专业游戏装备的探索者和引领者,红魔以自身强大的游戏基因和玩家的极致体验为出发点,不断满足专业玩家的硬核需求,树立行业新标杆的同时亦塑造了自身硬核、极致、专业的品牌气质。旗下……弹道导弹并不是核武器,为什么一些国家不允许发展?此话不严谨,不许发展的是美苏(后来的俄罗斯)之间的弹道导弹。其他国家想研制还是可以随便发展的。但是,弹道导弹的研发是比核武器研发还难的事情。(天上没卫星的国家就不要玩嗨了)……吉普牧马人插电混动刚进入2021年5月吉普就推出了旗下畅销SUV车型牧马人的插电混动版本。随着该款新能源车型上市,路上挂着绿牌的吉普插电混动SUV将会逐渐多起来。那么牧马人这样的硬汉越野车型加持……从3799元跌至2569元,65W闪充曲面屏,从高端市场跌至本来手机行业因为市场份额饱和竞争已经非常激烈了,而当华为公司因为受限份额大幅下滑之后,手机行业中的竞争就瞬间变得更加激烈了,各大手机厂商都想抢占原本属于华为手机的份额,不仅仅发……不懂就问,都说IT行业饱和了,程序员的薪资真的很高吗?IT,字面意思是信息技术。通常是分为硬件和软件两个方面。硬件泛指我们用的电脑主机、存储设备、网络设备等。软件指的的是各类应用软件,比如专业软件ERP、CRM等等。题主说的饱和,……俞敏洪不如去请张同学雪水源源不断地从祁连山流下、塔里木河的水开始流动起来,雨水充沛一点,塞上江南的味道,风景壮阔,大漠孤烟直,长河落日圆。。。。。。以上来自于俞敏洪对肃南高原富硒藜麦和新疆库……Python连接数据库操作一、数据库基础用法要先配置环境变量,然后cmd安装:pipinstallpymysql1、连接MySQL,并创建wzg库引入decimal模块importpymysql连……助听器一定要双耳配同款的吗?对听力有障碍的人,选配助听器一事,在我陪父亲去专卖店,选配6年中的体会,一开始仅配一个耳背式助听器,但随着老人年龄的增长,听力逐步减弱,我认为双耳都配戴,听力效果显得更好。……
堆料最足一款骨传导耳机,南卡RunnerPro2实测全是惊喜惠州西湖与丰渚园马斯克与川普440亿美元只为让你发声?价格更低,搭载麒麟9000的4G版华为Mate40能买吗?江西省IP360区块链电子证据判例入选第四届百篇优秀裁判文书售价更便宜!华为新品发布会曝光华为Mate40EPro5G下二氧化碳热泵从1到N最值得买的手机都有哪些?这五款性能强劲,价格良心周鸿祎全员信宣布全面转型数字安全,评论区秒变大型招聘现场华为Mate50Pro渲染图1寸副屏2亿4镜头,骁龙895芯量体裁衣助力数字化转型12月15日A股早餐(周三)
太平洋海面上升冲出26具二战日军遗骸及武器八年级英语备课组工作总结赵继伟杀疯了214单节10分,轻取浙江拿下系列赛开门红氯化铅晶体吴门狱中怀北山旧隐其五心理部工作计划五彩缤纷的春天一年级作文杜邦以全新产品体系开拓更大市场空间没有谁造句用没有谁造句大全一个人,只要有了这十条穷人思维,可能会穷得很稳定哦!宇宙最长的墙:史隆长城,星系形成的巨墙(长13。7亿光年)鸽子身上长黄疙瘩

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁