mysql数据库之pymsql模块

pymysql模块的工作原理是:把pycharm当成mysql客户端与mysqld服务端进行通信操作数据。

import pymysql       #首先导入模块,先在命令行下载该模块pip3 install pymysql

conn=pymysql.connect(
    host='127.0.0.1',       #服务端ip地址
    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;')         #发送你要操作命令,coursor.execute等同于coursor.send,返回的是数据库内受影响的行数
print(rows)


# print(cursor.fetchone())                #打印具体的数据
# print(cursor.fetchone())
# print(cursor.fetchmany(2))       #指定打印数据的条数
# print(cursor.fetchall())           #把结果都打印出来
# 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()      #关闭客户端





防止sql注入问题:

 在服务端防止sql注入问题:不要自己拼接字符串,让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)


inp_user=input('用户名>>:').strip() #inp_user=""
inp_pwd=input('密码>>:').strip() #inp_pwd=""
sql="select * from user where username=%s and password=%s" #不要自行拼接
print(sql)


rows=cursor.execute(sql,(inp_user,inp_pwd)) #交给mysqld服务端自己拼接,该模块有自己的拼接方法,可以晒出用户输入的特殊符号
if rows:
print('登录成功')
else:
print('登录失败')

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)

# 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()
 
posted @ 2018-05-11 15:48  鲁之敬  阅读(200)  评论(0编辑  收藏  举报