Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)
# frist.py import pymysql # 创建数据库对象 db = pymysql.connect(host="localhost", user="root", password="123456", database="db4", charset="utf8") # 利用db方法创建游标对象 cur = db.cursor() # 利用游标对象的execute()方法执行SQL命令 cur.execute("insert into sheng values\ (16,300000,'台湾省');") # 提交到数据库 db.commit() # 关闭游标对象 cur.close() # 断开数据库链接 db.close() # 增 删 改 import pymysql # 创建数据库链接 # 链接到db4库 db = pymysql.connect(host="localhost", user="root", password="123456", database="db4", charset="utf8") # 创建游标 cur = db.cursor() try: # 添加记录 cur.execute("insert into sheng values (17,168800,'浙江');") # 修改记录 cur.execute("update sheng set id=666 where id=17;") # 删除记录 cur.execute("delete from sheng where s_name='浙江';") # 截获EXception类型错误 except Exception as e: # 出现异常后回滚 db.rollback() # 输出错误 print("Error ", e) else: # 提交数据 db.commit() # 关闭游标 cur.close() # 断开数据库链接 db.close() # 查询 import pymysql # 创建数据库链接 db = pymysql.connect(host="localhost", user="root", password="123456", database="db4", charset="utf8") # 创建游标 cur = db.cursor() try: # 查找 cur.execute("select * from sheng;") # 取出一条记录就少一条 print("***************************") data1 = cur.fetchone() print(data1) print("***************************") data2 = cur.fetchmany(3) for i in data2: print(i) print("***************************") # 遍历取出数据 data3 = cur.fetchall() for x in data3: print(x) # 提交数据 db.commit() except Exception as e: db.rollback() print("Error ", e) # 关闭游标 cur.close() # 断开数据库链接 db.close() # 参数化 import pymysql # 创建数据库链接 db = pymysql.connect(host="localhost", user="root", password="123456", database="db4", charset="utf8") # 创建游标 cur = db.cursor() try: s_id = input("请输入省的编号") s_name = input("请输入省的名字") # 用占位符参数化数据 sql_insert = "insert into sheng(s_id,s_name) values(%s,%s)" # execute方法 传参必须是列表 cur.execute(sql_insert, [s_id, s_name]) # 提交数据 db.commit() except Exception as e: db.rollback() print("Error ", e) # 关闭游标 cur.close() # 断开数据库链接 db.close()
# mysqlpython.py # 导入mysql模块 from pymysql import * class MysqlPython: def __init__(self, database, # 库 host="127.0.0.1", # ip地址 user="root", # 用户名 password="123456", # 密码 port=3306, # 端口 charset="utf8"): # 字符集 self.host = host self.database = database self.user = user self.password = password self.port = port self.charset = charset def open(self): # 创建数据库链接函数 self.db = connect(host=self.host, database=self.database, user=self.user, password=self.password, port=self.port, charset=self.charset) self.cur = self.db.cursor() # 创建游标对象 def close(self): # 创建断开数据库链接 关闭游标函数 self.cur.close() self.db.close() def zhixing(self, sql, L=[]): # 创建pymysql.execute() 方法函数 try: self.open() # 链接数据库 self.cur.execute(sql, L) # 参数化执行SQL命令 self.db.commit() # 提交数据 print("ok") except Exception as e: self.db.rollback() # 出错取消提交 print("Failed", e) self.close() # 断开数据库链接 关闭游标 def all(self, sql, L=[]): try: self.open() self.cur.execute(sql, L) result = self.cur.fetchall() return result except Exception as e: print("Failed", e) self.close()
# frist.py from mysqlpython import MysqlPython # 创建数据库链接 sqlh = MysqlPython("db4") # 创建数据库对象 sql_update = "update sheng set s_name='辽宁省'\ where s_name='云南省';" # 调用xiugai函数 执行SQL命令:sql_update sqlh.zhixing(sql_update) sql_select = "select * from sheng where id=%s;" # 调用all函数 执行SQL命令:sql_select date = sqlh.all(sql_select, [1]) print(date)
用户登录系统示例:
from mysqlpython import Mysqlpython from hashlib import sha1 uname = input("请输入用户名:") pwd = input("请输入密码:") # 用sha1给pwd加密 s1 = sha1() # 创建sha1加密对象 s1.update(pwd.encode("utf8")) # 指定编码 pwd2 = s1.hexdigest() # 返回16进制加密结果 sqlh = Mysqlpython("db4") select = "select password from user where \ username=%s;" result = sqlh.all(select, [uname]) # print(result) # (('7c4a8d09ca3762af61e59520943dc26494f8941b',),) if len(result) == 0: print("用户名不存在") elif result[0][0] == pwd2: print("登录成功") else: print("密码错误")
# 创建一张表 # 连接数据库的模块 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String engine = create_engine("mysql+pymysql://root:123456@localhost/db4", encoding="utf8") Base = declarative_base() # orm基类 class User(Base): # 继承Base基类 __tablename__ = "t123" id = Column(Integer, primary_key=True) name = Column(String(20)) address = Column(String(40)) Base.metadata.create_all(engine)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SpringBoot实战(十一)之与JMS简单通信
什么是JMS? 引用百度百科上的说明: JMS即 Java消息服务(Java Message Service)应用程序接口,是一个 Java平台中关于面向 消息中间件(MOM)的 API,用于在两个应用程序之间,或 分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。 JMS是一种与厂商无关的 API,用来访问消息收发系统消息,它类似于 JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程...
- 下一篇
java源码-Stack
开篇 Stack是List的实现类当中最简单的,用一句话形容Stack那就是Stack在Vector的基础上采用Vector的特性来达到Stack的目标。 Stack是一种后进先出的数据结构类型(数组)(last in frist out);实现了Vector;在Vector的基础添加了五个方法: push(E item) 把项压入堆栈顶部。 pop() 移除堆栈顶部的对象,并作为此函数的值返回该对象。 peek() 查看堆栈顶部的对象,但不从堆栈中移除它。 boolean empty() 测试堆栈是否为空。 int search(Object o)#返回对象在堆栈中的位置,以 1 为基数。 Stack类图 Stack类图 Stack源码分析 Stack的源码非常简单,就是在Vector提供的接口基础上作了一层封装。 push操作直接调用Vector的addElement()方法在尾部添加元素 pop操作直接调用Vector的removeElementAt()方法移除尾部的元素 Stack的操作全部是线程安全,使用synchronized变量进行修饰 public class S...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS7安装Docker,走上虚拟化容器引擎之路