pymysql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pymysql相关的知识,希望对你有一定的参考价值。

一,IDE工具介绍
生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具
下载链接:https://pan.baidu.com/s/1bpo5mqj

掌握:
#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 备份库/表

#注意:
批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键

二,pymysql模块

先安装 pip3 install pymysql  才能导入这个模块

import pymysql

conn=pymysql.connect(
    host=127.0.0.1,
    port=3306,
    user=root,
    password=123,
    database=db42,
    charset=utf8
)
cursor=conn.cursor(pymysql.cursors.DictCursor)
# rows=cursor.execute(‘show tables;‘)
rows=cursor.execute(select * from class;)
print(rows)
#
# print(cursor.fetchone())
# print(cursor.fetchmany(2))
# print(cursor.fetchone())
# print(cursor.fetchall())
#
# print(cursor.fetchall())
# cursor.scroll(3,‘absolute‘)
# print(cursor.fetchone())
#
# print(cursor.fetchone())
# print(cursor.fetchone())
# cursor.scroll(1,‘relative‘)
# print(cursor.fetchone())
#
# cursor.close()
# conn.close()

import pymysql #pip3 install pymysql

conn=pymysql.connect(
    host=127.0.0.1,
    port=3306,
    user=root,
    password=123,
    database=db42,
    charset=utf8
)
cursor=conn.cursor(pymysql.cursors.DictCursor)


inp_user=input(用户名>>:).strip() #inp_user=""
inp_pwd=input(密码>>:).strip() #inp_pwd=""
sql="select * from user where name=‘%s‘ and password=‘%s‘" %(inp_user,inp_pwd)
print(sql)


rows=cursor.execute(sql)
if rows:
    print(登录成功)
else:
    print(登录失败)

cursor.close()
conn.close()



直接改变了sql  绕过了密码和用户名

#在服务器端防止sql注入问题:不要自己拼接字符串,让pymysql模块去拼接
import pymysql #pip3 install pymysql

conn=pymysql.connect(
    host=127.0.0.1,
    port=3306,
    user=root,
    password=123,
    database=db42,
    charset=utf8
)
cursor=conn.cursor(pymysql.cursors.DictCursor)


inp_user=input(用户名>>:).strip() #inp_user=""
inp_pwd=input(密码>>:).strip() #inp_pwd=""
sql="select * from user where name=%s and password=%s"
print(sql)


rows=cursor.execute(sql,(inp_user,inp_pwd))
if rows:
    print(登录成功)
else:
    print(登录失败)

cursor.close()
conn.close()

三,、增、删、改:conn.commit()

import pymysql #pip3 install pymysql

conn=pymysql.connect(
    host=127.0.0.1,
    port=3306,
    user=root,
    password=123,
    database=db42,
    charset=utf8
)
cursor=conn.cursor(pymysql.cursors.DictCursor)

# sql=‘insert into user(username,password) values(%s,%s)‘
# rows=cursor.execute(sql,(‘EGON‘,‘123456‘))
# print(rows)
# print(cursor.lastrowid)

# rows=cursor.execute(‘update user set username="alexSB" where id=2‘)
# print(rows)

# 一次插入多行记录
sql=insert into user(username,password) values(%s,%s)
rows=cursor.executemany(sql,[(lwz,123),(evia,455),(lsd,333)])
print(rows)
print(cursor.lastrowid)

conn.commit() # 只有commit提交才会完成真正的修改
cursor.close()
conn.close()

四,查:fetchone,fetchmany,fetchall

fetchone(查询单条)
 fetchmany(查询多条)
 fetchall(查询所有)

import pymysql

conn=pymysql.connect(
    host=127.0.0.1,
    port=3306,
    user=root,
    password=123,
    database=db42,
    charset=utf8
)
cursor=conn.cursor(pymysql.cursors.DictCursor)
# rows=cursor.execute(‘show tables;‘)
rows=cursor.execute(select * from class;)
print(rows)
#
# print(cursor.fetchone())
# print(cursor.fetchmany(2))
# print(cursor.fetchone())
# print(cursor.fetchall())
#
# print(cursor.fetchall())
# cursor.scroll(3,‘absolute‘)
# print(cursor.fetchone())
#
# print(cursor.fetchone())
# print(cursor.fetchone())
# cursor.scroll(1,‘relative‘)
# print(cursor.fetchone())
#
# cursor.close()
# conn.close()

五,获取最后

------查看表中最后一行的iD
import pymysql
conn=pymysql.connect(host=localhost,user=root,password=123456,
             database=day47,charset=utf8)
cursor=conn.cursor()


sql=insert into user1(user,password) values(%s,%s);
rows=cursor.execute(sql,(alex,123))
# rows=cursor.executemany(sql,[(‘yuanhao‘,‘123‘),(‘laowu‘,‘123‘),(‘kgf‘,‘12323‘)])
conn.commit()
print(cursor.lastrowid)  #查看表中最后一行的iD

cursor.close()
conn.close()

 



以上是关于pymysql的主要内容,如果未能解决你的问题,请参考以下文章

运行 tkinter+pymysql 脚本时出现 pymysql.err.ProgrammingError

pymysql.err.InterfaceError: (0, '')解决办法

Python 与 MySQL 交互

Python 与 MySQL 交互

pymysql操作

pymysql使用