Python(09.Python数据库编程)

这篇博客介绍了Python中使用SQLite进行数据库操作,包括导入模块、建立连接、创建表、增删查改等基本操作,并展示了如何添加单条和多条数据、修改和删除记录。此外,还涉及了查询的分页以及使用`executescript`和`create_function`进行批量操作和自定义函数。同时,简要提到了MySQL的下载和连接,以及创建表和添加数据的操作。

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代表拿5print(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()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值