参考:http://www.cnblogs.com/liwenzhou/p/8032238.html

使用pycharm操作数据库。

填一个数据库名,User:填root

填写要连接的数据库。

建表。

上传填写完的数据库。

PyMysql操作数据库。

import pymysql

# 拿到用户输入的用户名密码

# 去数据库里面判断用户名和密码是否正确
# 1. 连接数据库
conn = pymysql.connect(
host="localhost",
port=3306, # 端口号是数字类型
database="userinfo", # 写自己本地的数据库名字
user="root",
password="1**3*8",
charset="utf8" # 千万记得没有-
) cursor = conn.cursor() # 获取输入SQL语句的 光标 对象
sql = "select * from info;"
ret = cursor.execute(sql)
print(ret)
# 关闭连接
cursor.close()
conn.close()

结果:

3

Process finished with exit code 0

SQL防注入

import pymysql

# 获取用户输入
username = input("输入用户名:")
pwd = input("请输入密码:") # 连接数据库检索有没有该用户
conn = pymysql.connect(
host="localhost",
port=3306,
database="userinfo",
user="root",
password="",
charset="utf8"
) cursor = conn.cursor() # 获取光标
# 拼接要执行的SQL语句
sql = 'select * from info where username=%s and password=%s' # %s 不再需要引号
print(sql)
print("=" * 120)
# 执行SQL语句
ret = cursor.execute(sql, [username, pwd]) # 让pymysql帮我们拼接SQL语句
if ret:
print("登录成功")
else:
print("登录失败!")
# 关闭光标对像
cursor.close()
# 关闭连接
conn.close()

数据出错回滚操作:

 """
pymysql增操作
""" import pymysql conn = pymysql.connect(
host="localhost",
port=3306,
database="userinfo",
user="root",
password="1×××××",
charset="utf8"
) cursor = conn.cursor()#获取要执行的光标 # 拼接语句
sql = "insert into info (username, password)VALUES (%s, %s)"
# 执行
try:
cursor.execute(sql, ["大旭",])
# 自己写个for循环 (今天作业自己试下)
conn.commit() #确认
except Exception as e:
print("报错啦:", str(e))
conn.rollback() # 错误回滚
# 对数据库做写操作一定要记得提交assword cursor.close()
conn.close()

lastrowid(cid是获取的另一张表的id,使两个id对应)

import pymysql

conn = pymysql.connect(
host="localhost",
port=3306,
database="userinfo",
user="root",
password="",
charset="utf8"
) cursor = conn.cursor()
# 创建班级的sql语句
sql1 = "insert into class (name) VALUES (%s)"
# 创建学生的sql语句
sql2 = "insert into student (name, cid) VALUES (%s, %s)" cursor.execute(sql1, "全栈9期")
new_id = cursor.lastrowid # 获取刚插入数据的ID值
cursor.execute(sql2, ["小东北", new_id])
conn.commit() cursor.close()
conn.close()
 import pymysql

 conn = pymysql.connect(
host="localhost",
port=3306,
database="userinfo",
user="root",
password="1*****",
charset="utf8"
) cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 指定返回的数据格式为字典格式 sql = "select * from info" cursor.execute(sql) # 返回的不是具体的数据而是受影响的行数
# ret = cursor.fetchall() # 返回所有的数据
# ret = cursor.fetchone() # 返回第一条的数据
# print(ret)
# ret = cursor.fetchone() # 返回一条的数据
# print(ret)
# ret = cursor.fetchone() # 返回一条的数据
# print(ret)
# ret = cursor.fetchone() # 返回一条的数据
# print(ret)
# ret = cursor.fetchone() # 返回一条的数据
# print(ret)
# ret = cursor.fetchone() # 返回一条的数据
# print(ret)
# ret = cursor.fetchone() # 返回一条的数据
# print(ret) ret = cursor.fetchmany(3) # 查询具体多少条数据
print(ret)
# cursor.scroll(0, mode="absolute") # 绝对移动,写多少就是移到多少 cursor.scroll(-1, mode="relative") # 光标往前移一格
ret = cursor.fetchall() #( -1 )这里的光标是从第3条后开始的
print(ret)
cursor.close()
conn.close()

结果:

[{'username': '田径', 'password': 'abcde', 'id': 1}, {'username': '调高', 'password': 'cscsj', 'id': 2}, {'username': '篮球', 'password': 'haha', 'id': 3}]
[{'username': '篮球', 'password': 'haha', 'id': 3}] Process finished with exit code 0

PyMysql复习的更多相关文章

  1. sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError)

    在我学习flask建立网站时间碰到了一个棘手的问题,就是在我进行操作日志的更新时间,发现表格建立有点错误,导致表缺失,从而报了下面的错误 sqlalchemy.exc.ProgrammingError ...

  2. python基础复习

    复习-基础 一.review-base 其他语言吗和python的对比 c vs Python c语言是python的底层实现,解释器就是由python编写的. c语言开发的程序执行效率高,开发现率低 ...

  3. day43 多表查询和pymysql

    复习 增删改查全语法 # 增 insert into db1.t1(字段2, 字段1, ..., 字段n)|省略 values (值2, 值1, ..., 值n)|(值1, 值2, ..., 值n)[ ...

  4. auth复习和BBS项目的登录(1)

    auth复习 auth组件 验证:authenticate(request,username='andy',password='123) 登录:login(request,user) 注销:login ...

  5. 巩固复习(Django最基础的部分_具体查看官方文档)

    Django学习路1 1.脚本不能随便运行,没准 linux 运行完就上不去了 2.pip 在 linux 上 写 pip3 同理 python 写为 python3 3.在 pycharm 上安装库 ...

  6. iOS总结_UI层自我复习总结

    UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...

  7. vuex复习方案

    这次复习vuex,发现官方vuex2.0的文档写得太简略了,有些看不懂了.然后看了看1.0的文档,感觉很不错.那以后需要复习的话,还是先看1.0的文档吧.

  8. 我的操作系统复习——I/O控制和系统调用

    上篇博客介绍了存储器管理的相关知识——我的操作系统复习——存储器管理,本篇讲设备管理中的I/O控制方式和操作系统中的系统调用. 一.I/O控制方式 I/O就是输入输出,I/O设备指的是输入输出设备和存 ...

  9. pyMysql

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

随机推荐

  1. boost基础环境搭建

    因为现在手上的老的基类库经常出现丢包,以及从ServiceAClient 发送消息到 ServiceBServer时出现消息失败的情况,以及现有的莫名其妙的内存泄露的问题,以及目前还是c++0x,准确 ...

  2. nfs文件系统在linux下挂载不上的解决办法

      标签: mount nfs export 2014年08月07日 18:46:247472人阅读 评论(0) 收藏 举报  分类: 文件系统(10)  版权声明:本文为博主原创文章,未经博主允许 ...

  3. [BAT]批处理自动修改区域和语言选项

    open a cmd window and type reg query "HKCU\Control Panel\International" which will show yo ...

  4. part1:11-linux在线安装工具yum

    第三方的免费软件仓库安装包 1.Linux安装软件: rpm方式:rpm(Red Hat Package Manager)现在是Linux standard Base(LSB)中采用的包管理系统. 优 ...

  5. sqlldr 笔记

    表结构 CREATE table sqlloader_test ( f1 char(20), f2 char(20), f3 number(16), f4 date ); 数据文件data.csv 1 ...

  6. 【c3p0】 C3P0的三种配置方式以及基本配置项详解

    数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理. ---------------------------------------- ...

  7. 2018.09.17 atcoder Tak and Cards(背包)

    传送门 背包经典题. 直接f[i][j]f[i][j]f[i][j]表示选i张牌和为j的方案数. 最后统计答案就行了. 代码: #include<bits/stdc++.h> #defin ...

  8. 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)

    传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...

  9. 2018.07.23 codeforces 438D. The Child and Sequence(线段树)

    传送门 线段树维护区间取模,单点修改,区间求和. 这题老套路了,对一个数来说,每次取模至少让它减少一半,这样每次单点修改对时间复杂度的贡献就是一个log" role="presen ...

  10. Series转成list

    直接list(series)就可以的 最佳的方式是将列表转换成Python中的科学计算包numpy包的array类型,再进行加减. 1 2 3 4 import numpy as np a = np. ...