博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python连接MySQL
阅读量:4961 次
发布时间:2019-06-12

本文共 3564 字,大约阅读时间需要 11 分钟。

PyMySQL的连接

# 导入pymysql模块import pymysql# 连接databaseconn = pymysql.connect(host="你的数据库ip地址",port=端口号, user="用户名",password="密码",database="数据库名",charset="utf8")# 得到一个可以执行SQL语句的光标对象cur = conn.cursor()
# 得到一个可以执行SQL语句并且将结果作为字典返回的游标cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
# 定义要执行的SQL语句 """
sql = select/insert into /delete/update
""" # 执行SQL语句 cur.execute(sql) # 关闭光标对象 cur.close() # 关闭数据库连接 conn.close()
 

规避注入问题:

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语句 (1)sql = 'select * from info where username=%s and password=%s'%(username, pwd)  在这种情况下,若用户输入注释(--)或者输入恒成立的字符串也同样会匹配成功 (2)sql = 'select * from info where username=%s and password=%s'
  # 执行SQL语句  ret = cursor.execute(sql, [username, pwd])  # pymysql内部拼接并识别特殊字符if ret:    print("登录成功")else:    print("登录失败!")# 关闭光标对像cur.close()# 关闭连接conn.close()

增删改查

增加

  

# 导入pymysql模块import pymysql username="老张" age="12"# 连接databaseconn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)# 得到一个可以执行SQL语句的光标对象cur = conn.cursor() #增加数据sql = "INSERT INTO DB1(name, age) VALUES (%s, %s);"
# 执行SQL语句cur.execute(sql, [username, age])
# 提交事务conn.commit()cur.close()conn.close()

 删除

 
# 导入pymysql模块import pymysql username="老张" age="12"# 连接databaseconn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)# 得到一个可以执行SQL语句的光标对象cur = conn.cursor()
#删除数据sql = "DELETE from DB1 WHERE name=%s"
# 执行SQL语句cur.execute(sql,"老张")
# 提交事务conn.commit()cur.close()conn.close()
 

更改

# 导入pymysql模块import pymysqlusername="老张"age="12"# 连接databaseconn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)# 得到一个可以执行SQL语句的光标对象cur = conn.cursor()#修改数据sql = "update db1 set name=%s where age=%s ;" # 执行SQL语句 cur.execute(sql, [username, age]) # 提交事务 conn.commit() cur.close() conn.close()

查询

# 导入pymysql模块import pymysqlusername="老张"age="12"# 连接databaseconn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”)# 得到一个可以执行SQL语句的光标对象cur = conn.cursor()#查询数据sql = "select *from db1 ;" sq1 = "select name,sge from db1 where id=1"# 执行SQL语句 cur.execute(sql]) # 查询所有数据ret=cur.fetchall() #查询一条数据 ret=cur.fetchone() #查询指定条数数据 ret=cur.fetmany(2) cur.close() conn.close()
# 光标按绝对位置移动1cur.scroll(1, mode="absolute")# 光标按照相对位置(当前位置)移动1cur.scroll(1, mode="relative")  数字为正数向下移动,数字为负向上移动。
 

 连接池

from DBUtils .PooledDB import PooledDB
POOL = PooledDB(        creator=pymysql,  # 使用链接数据库的模块        maxconnections=6,  # 连接池允许的最大连接数,0和None表示不限制连接数        mincached=2,  # 初始化时,链接池中至少创建的空闲的链接,0表示不创建        maxcached=5,  # 链接池中最多闲置的链接,0和None不限制        maxshared=3,        # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。        blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错        maxusage=None,  # 一个链接最多被重复使用的次数,None表示无限制        setsession=[],  # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]        ping=0,        # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed,      7 = always        host='127.0.0.1',        port=3306,        user='root',        password='123456',        database='DB',        charset='utf8'    ) #连接数据库池 conn=POOL.connection()

 

转载于:https://www.cnblogs.com/liusouthern/p/8508932.html

你可能感兴趣的文章
arraylist
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
2124: 等差子序列 - BZOJ
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
HashMap详解
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>