python连接mysql需要以下五步:
连接数据库
生成游标对象
执行sql语句
关闭游标
关闭数据库连接
1. 连接数据库
准备:
操作需要使用pymysql模块,首先进行下载:
pip install pymysql
数据库:
create table user
(
id int primary key auto_increment,
name varchar(32),
age int
)
import pymysql
#连接服务器地址(本机使用127.0.0.1)
host = '127.0.0.1'
#用户名
user = 'root'
#密码
password = '123456'
#端口(默认端口为3306)
port = 3306
#数据库名
db = 'mydb'
#字符编码
charset = 'utf8'
#创建连接
conn=pymysql.connect(host=host,user=user,password=password,port=port,db=db,charset=charset)
2. 生成游标对象
cursor = conn.cursor()
#设置参数 cursor=pymysql.cursors.DictCursor 修改返回值类型为字典。默认为元组
3. 执行sql语句
查询:(无参数)
sql = "select * from user"
rows = cursor.execute(sql) #执行sql语句并获得执行影响的行数
data = cursor.fetchall()
for item in data:
print(item)
有参数(参数用元组传递)
sql = "select * from from user where id=%s and name=%s"
rows = cursor.execute(sql,(1,'张三'))
data = cursor.fetchall()
增加:
try:
sql = "insert into user values(null,'张三',16)"
rows = cursor.execute(sql)
conn.commit() #提交事务
except:
conn.rollback() #如果插入不成功,回滚事务
另一种写法:
try:
sql = "insert into user values(null,%s,%s)"
rows = cursor.execute(sql,('张三',16))
conn.commit() #提交事务
except:
conn.rollback() #如果插入不成功,回滚事务
多行插入
try:
sql = "insert into user values(null,%s,%s)"
data = [
(null,'张三',16),
(null,'李四',23),
(null,'王五',34)
] #必须使用列表嵌套元组的形式
rows = cursor.executemany(sql,data)
conn.commit() #提交事务
except:
conn.rollback() #如果插入不成功,回滚事务
删除:
try:
sql = "delete from user where id=%s"
rows = cursor.execute(sql,1)
conn.commit()
except:
conn.rollback()
修改:
try:
sql = "update user set name=%s where id=%s"
rows = cursor.execute(sql,('张五',1))
conn.commit()
except:
conn.rollback()
4. 关闭游标
cursor.close()
5. 关闭数据库连接
conn.close()
领取专属 10元无门槛券
私享最新 技术干货