安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

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年中的体会,一开始仅配一个耳背式助听器,但随着老人年龄的增长,听力逐步减弱,我认为双耳都配戴,听力效果显得更好。……
解除链接屏蔽让互联网真正互联互通网上曝光的vivoX80系列手机,都有哪些亮点?WIN11关闭屏幕或睡眠后唤醒黑屏(有鼠标)官方说是显卡驱动聊一聊币圈搅屎棍马斯克大学生买什么配置的笔记本电脑和台式电脑合适?别乱买,很有讲究云南发布数字经济发展方案重点打造省级区块链中心3年培育10家美科技巨头员工平均年薪排行谷歌30万美元排第一,苹果6。8万助听器里的发声器有滋滋声是怎么回事?晚点独家滴滴几乎全线业务都将裁员中兴,追不上小米字节跳动裁撤战投部门?互联网巨头有大动作,股权投资生态或迎变鸿蒙系统7nm芯片90Hz屏,跌至2199元,华为手机重回低深读人世间周秉昆为何第一眼看到郑娟就沦陷了?有四大原因一个英语小故事搞定220个高频词TheBestThingin花皙蔻是哪个国家的?花皙蔻是韩国的吗?考取什么驾照能开公交车安抚奶嘴会影响牙齿和嘴型吗莲雾树的栽培管理技术生活不是段子在心里种花,人生才不会荒芜关于勃勃生机造句你认为好用的面霜排名前十的是哪些?琵琶亭上说心思3回忆历史日本恐怖分子犯下震惊世界的洛德机场大屠杀直发怎么扎好看二招搞定单调直发

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利