集群环境:CDH5.8
python3版本:3.6.8
pip3版本:18.1
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# 导包
import pymysql
# 连接database
mysql_conn = pymysql.connect(host="x.x.x.x",port=3306, user="xxx",password=xxx",database="hello_world",charset="utf8mb4")
# 得到一个可以执行SQL语句的光标对象
mysql_cursor = mysql_conn.cursor()
try:
# sql查询语句
sql = "select name,age from user where name=%s";
# 执行sql语句
mysql_cursor.execute(sql,(str(name)))
# 获取查询结果
result = mysql_cursor.fetchone()
print(result)
if(result != None):
sql = "update user set age=%s where name =%s"
mysql_cursor.execute(sql,(18,result[0]))
else:
sql = "insert into user(creator,name,age) values(%s,%s,%s)"
mysql_cursor.execute(sql,('zk','zk',18))
# 提交到数据库执行
mysql_conn.commit()
except Exception as e:
print(e)
# 发生错误时回滚
mysql_conn.rollback()
# 关闭数据库连接
mysql_conn.close()
备注:
- 参数设置
sql中的参数使用%s占位,多个参数组成一个元祖
- 参数设置
- sql执行结果
mysql_cursor.execute("select name,age from user where name=%s",(str(name)))
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
result = mysql_cursor.fetchone() # 这里,可以使用键值对的方法,由键名字来获取数据 # name = result["name"] # age = result["age"] name = result[0] age = result[1]
- fetchall():接收全部的返回结果行.
result = mysql_cursor.fetchall() for result in results: # 这里,可以使用键值对的方法,由键名字来获取数据 # name = result["name"] # age = result["age"] name = result[0] age = result[1]
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数,如果是查询时,是查询结果集的条数
sql = "update user set age=%s where name =%s" mysql_cursor.execute(sql,(18,result[0])) count = mysql_cursor.rowcount
网友评论