安装Python访问MySQL的模块
安装pymysql模块
pip install pymysql
pycharm的py文件中,测试连接代码;
import pymysql
##connection 用于数据库连接,获取数据库对象,cursor,数据库交互对象,exception数据库异常类
##流程:创建connection,创建数据库连接对象,然后调用cursor方法,返回cursor对象,对数据库进行操作,cursor调用##方法,执行命令,获取数据处理出数据,然后关闭cursor,关闭cnnection(否则占用资源),结束。
##connection对象的方法:cursor():使用该链接并返回游标,commit()提交当前事务,rollback()回滚当前事务,##close()关闭连接
。
##游标对象,由于执行查询和获取结果。excute(),执行数据库查询和命令,将数据库语句送到数据库执行,数据库将对象##返回客户端缓冲池。fetchone()去的结果集的下一行。##fetchmany(size)获取结果集的下几行,fetchall():获取结果##集中的剩下所有行,rowcount():最近一次execute返回数##据的行数或者影响的行数。close():关闭是游标对象。
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行一个数据库的查询命令
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
print(cur._last_executed) 打印上次执行的sql语句
建立数据库连接
conn = pymysql.Connect(
host='localhost',##mysql服务器地址
port=3306,##mysql服务器端口号
user='root',##用户名
passwd='',##密码
db='python',##数据库名
charset='utf8'##连接编码
)
获取游标
cursor = conn.cursor()
print(conn)
print(cursor)
1、从数据库中查询
sql = "SELECT * FROM login"
cursor执行sql语句
cursor.execute(sql)
打印执行结果的条数
print(cursor.rowcount)
使用fetch方法进行遍历结果 总共有三条数据
rs=cursor.fetchone()#将第一条结果放入rs中
re=cursor.fetchmany(3)#将多个结果放入re中
rr = cursor.fetchall() # 将所有的结果放入rr中
对结果进行处理
for row in rr:
print("ID是:=%s, 姓名是:=%s, 密码是:=%s" % row)
print(re)#输出两条数据,因为fetch()方法是建立在上一次fetch()方法基础上的
按照字典的形式来获取数据再进行数据的操作:
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
sql="select * from cms_news where news_id> %s"
data="20"
cursor.execute(sql,data)
print(cursor.rowcount)
list=cursor.fetchall()
print(list)
for (index,item) in enumerate(list):
print(item["title"],index)
2数据库中插入数据
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
sql="INSERT INTO cms_user(username,password,realname,status)values (%s,%s,%s,%s)"
print(sql)
data=("zhangsan","123","张三",1)
cursor.execute(sql,data)
conn.commit()
print(cursor.lastrowid)
#数据库插入多条数据
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
sql="INSERT INTO cms_user(username,password,realname,status)values (%s,%s,%s,%s);"
data = [("zhangsan1", "123", "张三", '1'),("zhangsan2", "1234", "张三1", '0')]
cursor.executemany(sql,data)
conn.commit()
修改数据库中的内容
sql="UPDATE cms_user set username=%s where user_id=%s"
data=("lisi",14)
cursor.execute(sql,data)
conn.commit()
删除数据库中的内容
sql = "DELETE FROM cms_user WHERE user_id=%s"
data = (14)
cursor.execute(sql , data)
conn.commit()
数据库连接和游标的关闭
conn.close()
cursor.close()
where语句
WHERE 子句用于提取满足指定标准的的记录。
SELECT column_name(s)
FROM table_name
WHERE column_name operator value
SELECT user,email FROM class WHERE user='张三' || user='李四'
SELECT user,email FROM class WHERE user='张三' && user='李四'
SELECT user,email FROM class WHERE user!='张三' && user!='李四'
LIMIT 3
ORDER BY 关键词
ORDER BY 关键词用于对记录集中的数据进行排序。
ORDER BY 关键词默认对记录进行升序排序。
如果你想降序排序,请使用 DESC 关键字。 ASC—升序
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC
SELECT * FROM MyGuests ORDER BY Age
SELECT * FROM MyGuests ORDER BY Age ASC
$sql="select * from employees ORDER BY id ASC limit 1,20 ";
like 用法
我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。
WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 “runoob_author = ‘RUNOOB.COM’”。
但是有时候我们需要获取 runoob_author 字段含有 “COM” 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。
SQL LIKE 子句中使用百分号 %字符来表示任意字符。
如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
查找以huxiao结尾的username
select * from user where username like '%huxiao';
查找以huxiao开头的username
select * from user where username like 'huxiao%';
查找huxiao中间位置出现的username
select * from user where username like '%huxiao%';