=========5.python数据库编程================
1.回顾:
数据库的产生:
-- 早期:纯手工管理纸质数据
-- 中期:在磁盘上的文件系统来存储数据
-- 现代:专门的数据库管理系统
数据库功能:
-- 提供获取和处理数据功能
-- 供组织和存储数据的功能
-- 信息系统的核心技术
数据库分类:
-- 1.关系型数据库:mysql,sqlite,oracle,DB2
-- 2.nosql数据库:mongodb,redis
-- 3.对象关系型数据库:postgresql(了解)
2.PyMySQL模块:
安装 pip install pymysql
3.使用数据库步骤:
连接数据库===>获取游标===>执行sql语句
===>关闭游标===>关闭连接
1.创建连接:
import pymysql
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='1234',
db='test',
charset='utf8'
)
2.获取游标:
cur = conn.cursor()
3.游标对象执行的方法:
execute(sql)
fetchone()
fetchmany()
fetchall()
rowcount()
close()
4.关闭游标,关闭连接
cur.close() --关闭游标
conn.close() --关闭连接
4.事务:
-- 事务是访问和更新数据库的一个程序执行单元
-- 特点:
-- 1.原子性:事务中包括的诸多操作要么都做,要么都不做
-- 2.一致性:事务必须使数据库从一致性状态变到另一个一致性状态
-- 3.隔离性:一个事务的执行不能被其他事务干扰
-- 4.持久性:事务一但提交,它对数据库中的改变就是永久性的
开发过程中怎样使用事务:
-- 关闭自动commit:设置autocommit(False)
-- 正常结束事务:conn.commit()
-- 提交事务失败的处理,回滚:conn.rollback()
5.实例01:
import pymysql # 引入模块
# 数据库连接
db = pymysql.connect(host='localhost', port=3306, user='root', passwd='111111', database="test01", charset='utf8')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("show databases;")
# 使用 fetchone() 方法获取所有条数据.
data = cursor.fetchall()
print(data)
# 关闭游标
cursor.close()
# 关闭数据库连接
db.close()
6.实力02:
import pymysql # 引入PyMySQL模块
# 使用pymysq中的connect函数,建立连接,获取连接对象
con = pymysql.connect(
host='localhost',
user='root',
passwd='111111',
database='test01',
charset='utf8'
)
# 使用连接对象,获取游标
cur = con.cursor()
# 将所有需要用到的SQL语句放到一个字典中
sql_string_dict = {
"create": 'create table if not exists day1(card_id int, name VARCHAR(30), address VARCHAR(128)) default charset=utf8',
"insert": ['insert into day1(card_id,name,address) values(1,"Rose","北京")',
'insert into day1(card_id,name,address) values(2,"Jack","天津")',
'insert into day1(card_id,name,address) values(3,"张三","合肥")',
'insert into day1(card_id,name,address) values(4,"LiLy","河北")', ],
"select": 'select * from day1',
"update": 'update day1 set name="小丽" where card_id=4',
"delete": 'delete from day1 where card_id=3',
"drop": 'drop table if EXISTS day1',
}
# 创建输出函数
def for_out(cur):
for row in cur:
print(row)
print()
try:
cur.execute(sql_string_dict["drop"])
print("创建表:")
print(sql_string_dict["create"])
cur.execute(sql_string_dict["create"])
print("插入数据:")
for sql in sql_string_dict["insert"]:
print(sql)
cur.execute(sql)
print("执行查询操作:")
cur.execute(sql_string_dict["select"])
for_out(cur)
print("执行修改操作:")
cur.execute(sql_string_dict["update"])
cur.execute(sql_string_dict["select"])
for_out(cur)
print("执行删除操作:")
cur.execute(sql_string_dict["delete"])
cur.execute(sql_string_dict["select"])
for_out(cur)
con.commit() # 提交数据
except Exception as e:
print(e)
con.rollback() # 失败后回滚
# 关闭游标
cur.close()
# 关闭数据库连接
con.close()
7.python和mysql交互:
from pymysql import *
def main():
# 获取要查询的商品名称
find_name = input("请输入要查询的商品类型名:")
# 创建链接对象
conn = connect(host='localhost',
port=3306,
user='root',
password='mysql',
database='jing_dong',
charset='utf8')
# 创建游标
cs = conn.cursor()
# 定义一个变量,用来存储要执行的sql语句
sql = """select * from goods_cates where name="%s";""" % find_name
print("=======>%s<=========" % sql)
cs.execute(sql)
for temp_info in cs.fetchall():
print(temp_info)
# 关闭游标
cs.close()
# 关闭链接
conn.close()
了解
8.防止注入,参数化:
from pymysql import *
def main():
# 获取要查询的商品名称
find_name = input("请输入要查询的商品类型名:")
# 创建链接对象
conn = connect(host='localhost',
port=3306,
user='root',
password='mysql',
database='jing_dong',
charset='utf8')
# 创建游标
cs = conn.cursor()
# 定义一个变量,用来存储要执行的sql语句
# select * from goods_cates where name="" or 1=1 or ""
# 这种形式会内部过滤注入,%s没有双引号
cs.execute("""select * from goods_cates where name=%s;""", [find_name])
for temp_info in cs.fetchall():
print(temp_info)
# 关闭游标
cs.close()
# 关闭链接
conn.close()
if __name__ == "__main__":
main()
python 数据库编程
最新推荐文章于 2024-10-29 19:43:02 发布
本文详细介绍Python与数据库交互的基础知识,涵盖数据库发展历史、数据库功能与分类,重点介绍PyMySQL模块的使用,包括数据库连接、游标操作、SQL执行及事务处理,通过具体实例展示Python进行数据库编程的全过程。
摘要由CSDN通过智能技术生成