数据库操作
0.操作SQLite3数据库
(1) 导入相关库或模块(SQLite3)。
(2) 使用connect()连接数据库并获取数据库连接对象。它提供了以下方法:
.cursor() 方法来创建一个游标对象
.commit() 方法来处理事务提交
.rollback() 方法来处理事务回滚
.close() 方法来关闭一个数据库连接
(3) 使用con.cursor()获取游标对象。
(4) 使用游标对象的方法(execute()、executemany()、fetchall()等)来操作数据库,实现插入、修改和删除操作,并查询获取显示相关的记录。在Python程序中,连接函数sqlite3.connect()有如下两个常用参数。
database:表示要访问的数据库名。
timeout:表示访问数据的超时设定。
(5) 使用close()关闭游标对象和数据库连接。数据库操作完成之后,必须及时调用其close()方法关闭数据库连接,这样做的目的是减轻数据库服务器的压力
1.创建表
import sqlite3
#创建连接
con=sqlite3.connect('e:/sqlite3Demo/demo.db')
# 创建游标对象
cur=con.cursor()
#编写创建表的sql语句
sql='''create table t_person(
pno INTEGER primary key autoincrement,
pname VARCHAR not null,
age INTEGER
)'''
try:
#执行sql语句
cur.execute(sql)
print('创建表成功')
except Exception as e:
print(e)
print('创建表失败')
finally:
#关闭游标
cur.close()
#关闭连接
con.close()
2.插入数据
2.1插入一条数据
#导入模块
import sqlite3
#创建连接
con=sqlite3.connect('e:/sqlite3Demo/demo.db')
#创建游标对象
cur=con.cursor()
#编写插入sql
sql='insert into t_person(pname,age) values(?,?)'
try:
# 执行sql
cur.execute(sql, ('张三', 24))
#提交事务
con.commit()
print('插入数据成功')
except Exception as e:
print(e)
con.rollback()
print('插入数据失败')
finally:
#关闭游标连接
cur.close()
#关闭数据库连接
con.close()
2.2插入多条数据
#导入模块
import sqlite3
#创建连接
con=sqlite3.connect('e:/sqlite3Demo/demo.db')
#创建游标对象
cur=con.cursor()
#编写插入sql
sql='insert into t_person(pname,age) values(?,?)'
try:
# 执行插入多条数据的sql
cur.executemany(sql,[('小李',23),('小花',34),('小明',28)])
#提交事务
con.commit()
print('插入多条数据成功')
except Exception as e:
print(e)
con.rollback()
print('插入多条数据失败')
finally:
#关闭游标连接
cur.close()
#关闭数据库连接
con.close()
3.查询数据
3.1查询全部数据
#导入模块
import sqlite3
#创建连接
con=sqlite3.connect('e:/sqlite3Demo/demo.db')
#创建游标对象
cur=con.cursor()
#创建查询sql
sql='select * from t_person'
try:
cur.execute(sql)
#获取结果集
person_all=cur.fetchall()#返回一个列表
# print(person_all)
for person in person_all:
print(person)
except Exception as e:
print(e)
print('查询所有数据失败')
finally:
#关闭游标
cur.close()
#关闭连接
con.close()
3.2查询一条数据
#导入模块
import sqlite3
#创建连接
con=sqlite3.connect('e:/sqlite3Demo/demo.db')
#创建游标对象
cur=con.cursor()
#创建查询sql
sql='select * from t_person'
try:
cur.execute(sql)
#获取结果集,获取一条数据
person=cur.fetchone()#返回一个元组
print(person)
except Exception as e:
print(e)
print('查询所有数据失败')
finally:
#关闭游标
cur.close()
#关闭连接
con.close()
4.修改数据
#导入模块
import sqlite3
#创建连接
con=sqlite3.connect('e:/sqlite3Demo/demo.db')
#创建游标对象
cur=con.cursor()
#编写修改的SQL语句
sql='update t_person set pname=? where pno=?'
#执行sql
try:
cur.execute(sql, ('小张', 1))
#提交事务
con.commit()
print('修改成功')
except Exception as e:
print(e)
print('修改失败')
con.rollback()
finally:
#关闭连接
con.close()
5.删除数据
#导入模块
import sqlite3
#创建连接
con=sqlite3.connect('e:/sqlite3Demo/demo.db')
#创建游标对象
cur=con.cursor()
#编写删除数据的SQL语句
sql='delete from t_person where pno=?'
#执行sql
try:
cur.execute(sql, (2,))
#提交事务
con.commit()
print('删除成功')
except Exception as e:
print(e)
print('删除失败')
con.rollback()
finally:
#关闭连接
con.close()
1.操作MySQL数据库
1.下载安装社区版,win版本
2.配置,直接进入参数配置页面中的“Type and NetWorking”界面,我们要选择的是“Standalone MySQL Server / Classic MySQL Replication”选项,服务器配置类型“Config Type”选择“Development machine”,不同的选择将决定系统为MySQL服务器实例分配资源的大小,“Development machine”占用的内存是最少的;连接方式保持默认的TCP/IP,端口号也保持默认的3306即可,接下来就是设置MySQL数据库Root账户密码,需要输入两遍。这个密码必须记住,后边会用到
3.在配置Windows服务时,需要以下几部操作:勾选“Configure MySQL Server as a Windows Service”选项,将MySQL服务器配置为Windows服务;取消“Start the MySQL Server at System Startup”选项前边的“√”(该选项是设置是否开机自启动MySQL服务,在此我们选择开机不启动,大家也可以根据自己的需要来选择);勾选“Standard System Account”选项,该选项是标准系统账户,推荐使用该账户
1.1导包
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL
pip install PyMySQL
或者进入python官网https://www.python.org 点击菜单PyPI,输入pymsql,进行搜索,下载,命令行安装
pip install PyMySQL-0.9.3-py2.py3-none-any.whl
1.创建表
#导入pymysql
import pymysql
#创建连接
con=pymysql.connect(host='localhost',user='root',password='root',database='python_db',port=3306)
#创建游标对象
cur=con.cursor()
#编写创建表的sql
sql="""
create table t_student(
sno int primary key auto_increment,
sname varchar(30) not null,
age int(2),
score float(3,1)
)
"""
try:
# 执行创建表的sql
cur.execute(sql)
print('创建表成功')
except Exception as e:
print(e)
print('创建表失败')
finally:
#关闭连接
con.close()
2.插入数据
2.1插入一条数据
#导入模块
import pymysql
#创建连接
con=pymysql.connect(host='localhost',password='root',user='root',port=3306,database='python_db')
#创建游标对象
cur=con.cursor()
#编写插入数据的sql
sql='insert into t_student(sname,age,score) values(%s,%s,%s)'
try:
# 执行sql
cur.execute(sql, ('小强', 18, 99.9))
#提交事务
con.commit()
print('插入成功')
except Exception as e:
print(e)
con.rollback()
print('插入失败')
finally:
#关闭连接
con.close()
2.2插入多条数据
#导入模块
import pymysql
#创建连接
con=pymysql.connect(host='localhost',password='root',user='root',port=3306,database='python_db')
#创建游标对象
cur=con.cursor()
#编写插入数据的sql
sql='insert into t_student(sname,age,score) values(%s,%s,%s)'
try:
# 执行sql
cur.executemany(sql,[('小明',19,99.8),('小红',18,99.9),('晓丽',18,99.8),('小花',19,99.6)])
#提交事务
con.commit()
print('插入成功')
except Exception as e:
print(e)
con.rollback()
print('插入失败')
finally:
#关闭连接
con.close()
3.查询数据
3.1查询全部数据
#导入pymysql
import pymysql
#创建连接
con=pymysql.connect(host='localhost',database='python_db',user='root',password='root',port=3306)
#创建游标对象
cur=con.cursor()
#编写查询的sql
sql='select * from t_student where age=18'
#执行sql
try:
cur.execute(sql)
#处理结果集
students=cur.fetchall()
for student in students:
sno=student[0]
sname=student[1]
age=student[2]
score=student[3]
print('sno:',sno,'sname:',sname,'age:',age,'score:',score)
except Exception as e:
print(e)
print('查询所有数据失败')
finally:
#关闭连接
con.close()
3.2查询一条数据
#导入pymysql
import pymysql
#创建连接
con=pymysql.connect(host='localhost',database='python_db',user='root',password='root',port=3306)
#创建游标对象
cur=con.cursor()
#编写查询的sql
sql='select * from t_student where age=18'
#执行sql
try:
cur.execute(sql)
#处理结果集
student=cur.fetchone()
print(student)
sno=student[0]
sname=student[1]
age=student[2]
score=student[3]
print('sno:',sno,'sname:',sname,'age:',age,'score:',score)
except Exception as e:
print(e)
print('查询所有数据失败')
finally:
#关闭连接
con.close()
4.修改数据
#导入模块
import pymysql
#创建连接
con=pymysql.connect(host='127.0.0.1',database='python_db',user='root',password='root',port=3306)
#创建游标对象
cur=con.cursor()
#编写修改的sql
sql='update t_student set sname=%s where sno=%s'
#执行sql语句
try:
cur.execute(sql,('张三丰',1))
con.commit()
print('修改成功')
except Exception as e:
print(e)
con.rollback()
print('修改失败')
finally:
#关闭连接
con.close()
5.删除数据
#导入模块
import pymysql
#创建连接
con=pymysql.connect(host='127.0.0.1',database='python_db',user='root',password='root',port=3306)
#创建游标对象
cur=con.cursor()
#编写删除的sql
sql='delete from t_student where sname=%s'
#执行sql语句
try:
cur.execute(sql,('张三丰'))
con.commit()
print('删除成功')
except Exception as e:
print(e)
con.rollback()
print('删除失败')
finally:
#关闭连接
con.close()