09.Python数据库编程
SQLLite的增删查改操作
导入SQLLite模块
# 导入SQLLite模块
import sqlite3
获取连接对象connection
# 获取连接对象connection
conn = sqlite3.connect("questions.db")
print(conn)
获取游标对象cursor
# 游标对象cursor
c = conn.cursor()
关闭连接对象和游标
c.close()
conn.close()
创建table
c.execute("""
create table question(
_id integer primary key autoincrement,
question test,
optionA test,
optionB test,
optionC test,
optionD test,
answer
)
""")

在这里我们打开questions.db是看不懂的,这个时候我们需要需要用到辅助工具下图两个任意一个即可

增
添加单条数据
c.execute("insert into question values(null,?,?,?,?,?,?)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
添加多条数据
方式一
for i in range(10):
c.execute("insert into question values(null,?,?,?,?,?,?)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
方式二
c.executemany("insert into question values(null,?,?,?,?,?,?)", (
("你好,世界", "1月", "2月", "3月", "4月", "A"),
("你好啊,世界", "1月", "2月", "3月", "4月", "B")
))
修
修改单条数据
c.execute("update question set answer = ? where _id = ?", ("C", 1))
修改多条数据
c.executemany("update question set answer = ? where _id = ?", (
("C", 1),
("D", 2)
))
删
删除单条
c.execute("delete from question where _id = ?", (16,))
删除多条
c.executemany("delete from question where _id = ?", (
(15,),
(14,)
))
查询
分页(当前页数-1*每页的条数)
c.execute("select * from question limit ?, ?", (10, 5))
查询
查所有
c.execute("select * from question")
拿结果
拿多条
for i in c.fetchmany(5):# 5代表拿5条
print(i)
拿所有
for i in c.fetchall():
print(i)
其他方法
***executescript***同时操作多条语句
# 同时增加和修改
c.executescript("""
insert into question values(null,"你好,世界", "1月", "2月", "3月", "4月", "b");
update question set answer = "9" where _id = 12;
""")
***create_function***创建自定义函数(在加盐加密的基础上定义自己的方法)
# 定义函数(反过来,切片)
def reverseText(str):
return str[::-1]
print(reverseText("123"))

# 创建自定义函数 rt(名字) 1(几个参数) reverseText(函数)rt就代表reverseText
conn.create_function("rt", 1, reverseText)
c.execute("insert into question values(null,rt(?),?,?,?,?,?)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
'''
Pyhton操作SQLite数据库
支持的数据库类型:5种
Null(空),text(文本),real(浮点小数),integer(整数),blob(二进制类型)
'''
# 导入SQLLite模块
import sqlite3
# 定义函数(反过来,切片)
def reverseText(str):
return str[::-1]
print(reverseText("123"))
# 获取连接对象connection
conn = sqlite3.connect("questions.db")
print(conn)
# 游标对象cursor
c = conn.cursor()
# 创建自定义函数
conn.create_function("rt", 1, reverseText)
# 获取游标对数据进行CRUD
# 创建table
# c.execute("""
# create table question(
# _id integer primary key autoincrement,
# question test,
# optionA test,
# optionB test,
# optionC test,
# optionD test,
# answer
# )
# """)
# 添加单条数据
# c.execute("insert into question values(null,?,?,?,?,?,?)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
# 添加多条数据
# for i in range(10):
# c.execute("insert into question values(null,?,?,?,?,?,?)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
# 添加多条数据 方式二
# c.executemany("insert into question values(null,?,?,?,?,?,?)", (
# ("你好,世界", "1月", "2月", "3月", "4月", "A"),
# ("你好啊,世界", "1月", "2月", "3月", "4月", "B")
# ))
# 修改单条数据
# c.execute("update question set answer = ? where _id = ?", ("C", 1))
# 修改多条数据
# c.executemany("update question set answer = ? where _id = ?", (
# ("C", 1),
# ("D", 2)
# ))
# 删除单条
# c.execute("delete from question where _id = ?", (16,))
# 删除多条
# c.executemany("delete from question where _id = ?", (
# (15,),
# (14,)
# ))
# 查询
# c.execute("select * from question limit ?, ?", (10, 5))
# c.execute("select * from question")
# 拿结果
# 1.拿第一条 元组 下标从0开始
# print(c.fetchone()[1])
# 拿多条
# for i in c.fetchmany(5):
# print(i)
# 拿所有
# for i in c.fetchall():
# print(i)
# 其他方法
# c.executescript("""
# insert into question values(null,"你好,世界", "1月", "2月", "3月", "4月", "b");
# update question set answer = "9" where _id = 12;
# """)
c.execute("insert into question values(null,rt(?),?,?,?,?,?)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
# 提交事务
conn.commit()
# 关闭游标
c.close()
# 关闭连接对象connection
conn.close()

MySql的部分操作
MySql不像sqlite不需要下载插件,MySql需要下载插件
一共有两种方式下载
1:
下载pip install pymysql
查看有没有带下载好 pip list

2:选中项目点击File ->settings->project 项目名


点击下载
然后再看一下是否下载成功

下载成功之后我们就来导库
import pymysql
操作连接对象( **字典 )
# 操作连接对象(**字典)
conn = pymysql.connect(host="localhost", user="root", database="t224", password="123", charset="utf8")
print(conn)
获取游标
# 获取游标
c = conn.cursor()
创建表
c.execute("""
create table question(
qid int primary key auto_increment,#自动增长与sqlLite相比多了一个_
question varchar(50),
optionA varchar(20),
optionB varchar(20),
optionC varchar(20),
optionD varchar(20),
answer varchar(20)
)
""")
添加
# 用%s代替?
c.execute("insert into question values(null,%s,%s,%s,%s,%s,%s)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
关闭连接对象和游标
c.close()
conn.close()
"""
Python 操作MySQl数据库
"""
import pymysql
# 操作连接对象(**字典)
conn = pymysql.connect(host="localhost", user="root", database="t224", password="123", charset="utf8")
print(conn)
# 获取游标
c = conn.cursor()
# 创建表
# c.execute("""
# create table question(
# qid int primary key auto_increment,
# question varchar(50),
# optionA varchar(20),
# optionB varchar(20),
# optionC varchar(20),
# optionD varchar(20),
# answer varchar(20)
# )
# """)
# 添加
c.execute("insert into question values(null,%s,%s,%s,%s,%s,%s)", ("你好,世界", "1月", "2月", "3月", "4月", "A"))
conn.commit()
c.close()
conn.close()
这篇博客介绍了Python中使用SQLite进行数据库操作,包括导入模块、建立连接、创建表、增删查改等基本操作,并展示了如何添加单条和多条数据、修改和删除记录。此外,还涉及了查询的分页以及使用`executescript`和`create_function`进行批量操作和自定义函数。同时,简要提到了MySQL的下载和连接,以及创建表和添加数据的操作。
270

被折叠的 条评论
为什么被折叠?



