day 61 pymysql

Python3链接MySQL

本文介绍Python3链接MySQL的第三方库--PyMySQL的基本使用。mysql

PyMySQL介绍

PyMySQL 是在 Python3.x 版本中用于链接 MySQL 服务器的一个库,Python2中则使用mysqldb。sql

Django中也能够使用PyMySQL链接MySQL数据库。数据库

PyMySQL安装

pip install pymysql

链接数据库

注意事项

在进行本文如下内容以前须要注意:服务器

  • 你有一个MySQL数据库,而且已经启动。
  • 你有能够链接该数据库的用户名和密码
  • 你有一个有权限操做的database

基本使用# 导入pymysql模块

import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址 localhost等”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
# 定义要执行的SQL语句
sql = "select * from ren where name='alex'" CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT
NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库链接 conn.close()

登陆代码

有问题的代码fetch

import pymysql
name=input('name:')
psw=input('psw:')
conn=pymysql.connect(host= "localhost",database="db2",user="root",password="123456",charset='utf8')
cursor=conn.cursor()
# sql='select * from s8 WHERE name="%s" and psw="%s";'%(name,psw)
# 必定要认真
sql = "select * from s8 WHERE name='%s' and psw='%s';"%(name, psw)
print(sql)
ret=cursor.execute(sql)

print(ret)
# 这个返回的是行数,若是行数为1证实找到了对应的信息,不然为没有
cursor.close()
conn.close()
if ret==1:
    print('登陆成功')
else:print('登陆失败')

注意 这种形式的有BUG 在name处输入 alex' -- hehe 不用输入密码就能直接登陆

 

增删改查操做

# 导入pymysql模块
import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:
    # 执行SQL语句
    cursor.execute(sql, [username, age])
    # 提交事务
    conn.commit()
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()
复制代码

获取插入数据的ID(关联操做时会用到)
spa

 导入pymysql模块
import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
username = "Alex"
age = 18
try:
    # 执行SQL语句
    cursor.execute(sql, [username, age])
    # 提交事务
    conn.commit()
    # 提交以后,获取刚插入的数据的ID
    last_id = cursor.lastrowid
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

批量执行code

# 导入pymysql模块
import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);"
data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)]
try:
    # 批量执行多条插入SQL语句
    cursor.executemany(sql, data)
    # 提交事务
    conn.commit()
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

# 导入pymysql模块
import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
sql = "DELETE FROM USER1 WHERE id=%s;"
try:
    cursor.execute(sql, [4])
    # 提交事务
    conn.commit()
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

# 导入pymysql模块
import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
# 修改数据的SQL语句
sql = "UPDATE USER1 SET age=%s WHERE name=%s;"
username = "Alex"
age = 80
try:
    # 执行SQL语句
    cursor.execute(sql, [age, username])   也能够写成小括号
    # 提交事务
    conn.commit()
except Exception as e:
    # 有异常,回滚事务
    conn.rollback()
cursor.close()
conn.close()

查询单条数据对象

# 导入pymysql模块
import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
# 查询数据的SQL语句
sql = "SELECT id,name,age from USER1 WHERE id=1;"
# 执行SQL语句
cursor.execute(sql)
# 获取单条查询数据
ret = cursor.fetchone()
cursor.close()
conn.close()
# 打印下查询结果
print(ret)

查询多条数据blog

# 导入pymysql模块
import pymysql
# 链接database
conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)
# 获得一个能够执行SQL语句的光标对象
cursor = conn.cursor()
# 查询数据的SQL语句
sql = "SELECT id,name,age from USER1;"
# 执行SQL语句
cursor.execute(sql)
# 获取多条查询数据
ret = cursor.fetchall()
cursor.close()
conn.close()
# 打印下查询结果
print(ret)

 进阶用法

# 能够获取指定数量的数据
cursor.fetctmany(3)
# 光标按绝对位置移动1
cursor.scroll(1, mode="absolute")
# 光标按照相对位置(当前位置)移动1
cursor.scroll(1, mode="relative")
相关文章
相关标签/搜索