PyMysql复习

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

使用pycharm操作数据库。

填写要连接的数据库。

建表。

上传填写完的数据库。

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="123456",
    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()

 数据出错回滚操作:

 1 """
 2 pymysql增操作
 3 """
 4 
 5 import pymysql
 6 
 7 conn = pymysql.connect(
 8     host="localhost",
 9     port=3306,
10     database="userinfo",
11     user="root",
12     password="1×××××",
13     charset="utf8"
14 )
15 
16 cursor = conn.cursor()#获取要执行的光标
17 
18 # 拼接语句
19 sql = "insert into info (username, password)VALUES (%s, %s)"
20 # 执行
21 try:
22     cursor.execute(sql, ["大旭",])
23     # 自己写个for循环 (今天作业自己试下)
24     conn.commit() #确认
25 except Exception as e:
26     print("报错啦:", str(e))
27     conn.rollback()  # 错误回滚
28 # 对数据库做写操作一定要记得提交assword
29 
30 cursor.close()
31 conn.close()

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

import pymysql

conn = pymysql.connect(
    host="localhost",
    port=3306,
    database="userinfo",
    user="root",
    password="112358",
    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()
 1 import pymysql
 2 
 3 conn = pymysql.connect(
 4     host="localhost",
 5     port=3306,
 6     database="userinfo",
 7     user="root",
 8     password="1*****",
 9     charset="utf8"
10 )
11 
12 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 指定返回的数据格式为字典格式
13 
14 sql = "select * from info"
15 
16 cursor.execute(sql)  # 返回的不是具体的数据而是受影响的行数
17 # ret = cursor.fetchall()  # 返回所有的数据
18 # ret = cursor.fetchone()  # 返回第一条的数据
19 # print(ret)
20 # ret = cursor.fetchone()  # 返回一条的数据
21 # print(ret)
22 # ret = cursor.fetchone()  # 返回一条的数据
23 # print(ret)
24 # ret = cursor.fetchone()  # 返回一条的数据
25 # print(ret)
26 # ret = cursor.fetchone()  # 返回一条的数据
27 # print(ret)
28 # ret = cursor.fetchone()  # 返回一条的数据
29 # print(ret)
30 # ret = cursor.fetchone()  # 返回一条的数据
31 # print(ret)
32 
33 ret = cursor.fetchmany(3)  # 查询具体多少条数据
34 print(ret)
35 # cursor.scroll(0, mode="absolute")  # 绝对移动,写多少就是移到多少
36 
37 cursor.scroll(-1, mode="relative") # 光标往前移一格
38 ret = cursor.fetchall() #( -1 )这里的光标是从第3条后开始的
39 print(ret)
40 cursor.close()
41 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

猜你喜欢

转载自www.cnblogs.com/112358nizhipeng/p/10269160.html