Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)
# frist.py
import pymysql # 创建数据库对象
db = pymysql.connect(host="localhost", user="root",
password="", 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="", 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="", 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="", 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="", # 密码
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)
Python全栈 MySQL 数据库 (引擎、事物、pymysql模块、orm)的更多相关文章
- Python全栈 MySQL 数据库(SQL命令大全、MySQL 、Python调用)
为了梦想与了信仰 开局一张图 主要三个方面: 1.Linux终端命令 2.MySQL语句 3.Python调用 先删库 再跑路..... ...
- Python全栈 MySQL 数据库 (简述 、安装、基本命令)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 一个月的python已经结束了 下面就是数据库了 先说M ...
- Python全栈 MySQL 数据库 (索引、数据导入、导出)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 表字段重命名(change) alter table 表名 ...
- Python全栈 MySQL 数据库 (SQL查询、备份、恢复、授权)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 今天接着昨天的说 索引有4种: 普通 索引 :ind ...
- Python全栈 MySQL 数据库 (表字段增、删、改、查、函数)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 开局一张图 查询SQL变量 show variables 1.表字 ...
- [MySQL数据库之Navicat.pymysql模块、视图、触发器、存储过程、函数、流程控制]
[MySQL数据库之Navicat.pymysql模块.视图.触发器.存储过程.函数.流程控制] Navicat Navicat是一套快速.可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降 ...
- Python全栈 MongoDB 数据库(概念、安装、创建数据)
什么是关系型数据库? 是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据, 同时也是一个被组织成一组拥有正式描述性的表格( ...
- python 全栈开发,Day25(复习,序列化模块json,pickle,shelve,hashlib模块)
一.复习 反射 必须会 必须能看懂 必须知道在哪儿用 hasattr getattr setattr delattr内置方法 必须能看懂 能用尽量用__len__ len(obj)的结果依赖于obj. ...
- MySQL数据库篇之pymysql模块的使用
主要内容: 一.pymysql模块的使用 二.pymysq模块增删改查 1️⃣ pymsql模块的使用 1.前言:之前我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库, 那如何在p ...
随机推荐
- CORS跨域请求的限制和解决
我们模拟一个跨域的请求,一个是8888,一个是8887 //server.js const http = require('http'); const fs = require('fs'); http ...
- 剑指offer49 把字符串转换成整数
这个代码会报错 class Solution { public: ,kinvalid}; int now_status = kvalid; int StrToInt(string str) { now ...
- OnCollisionEnter和OnTriggerEnter
之前对这两个的用法不是特别清楚,重新学习了下,再做个测试看看效果如何: 1.新建一个场景test 2.添加一个cube,点击Inspector面板会发现系统已经默认添加了Box collisder组件 ...
- Http之基础
简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. HTTP是一个基于TCP/I ...
- 第一个C#程序Hello World
一.编写第一个C#程序——Hello World1. 启动Microsoft Visual Studio 2010.2. 点击“文件”菜单,选择“新建”项,在弹出的子菜单中选择“项目”命令.3. 弹出 ...
- C/C++程序基础 (十)模板和泛型
什么是泛型编程 基于模板,有效将算法和数据结构分离. 模板 包括类型和参数 模板函数:抽象的函数定义,代表一类同构函数.编译器在其调用位置自动完成对应模板函数的实例化. 模板类:抽象的类定义,代表更高 ...
- Delphi的Edit控件中只能输入数字且只能输入一个小数点
使用这种功能必须使用 OnKeyPress 事件,该事件是在窗体中获得键盘输入的焦点,并且在用户按键时发生.OnKeyPress 事件中有个重要参数:Key.Key 参数为Char 型,它能够获得用户 ...
- selenium webdriver 移动到某个位置,滚动到某个位置
https://blog.csdn.net/xiaosongbk/article/details/70231564
- 注释java中某个方法过时
添加一个注解即可 @Deprecated
- 记一次samba排错 Failed to start Samba SMB Daemon.
记录一次服务出错排错的过程,很多新手出了点错不百度直接巴拉巴拉的问,一般老手根据经验可以给出一点建议,但是由于个体环境的差异并不适用,反而埋怨起来.这种真的无F**K可说,所以要培养自己的排错能 ...