Python操作MySQL、MongoDB

目录

MySQL配置

Python操作MySQL

连接数据库

 创建数据库

查看所有数据库

删除数据库

选择数据库

查看当前选择的数据库

建表

删除表

查询数据

数据插入

 Python操作MongoDB数据库

MySQL配置

下载安装MySQL并且配置好环境变量

MySQL数据库服务不是一直需要运行的服务,可以将其设置为手动启动,以节省资源。

Win+R

在本地服务中找到MySQL80

双击在常规中将启动类型设置为手动。

Python操作MySQL

在Python中操作MySQL需要使用pymysql库

pip install pymysql

连接数据库

创建一个数据库测试连接

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)
# print(con.get_server_info())
# 版本信息 8.0.36

# 创建一个游标对象
cursor = con.cursor()

# 选择数据库
con.select_db('mq')

# 创建stu表
cursor.execute("create table stu(id int)")

# 关闭连接
con.close()

在Python中,使用数据库连接对象(如Connection)与数据库进行交互时,需要创建游标对象(如Cursor)。游标对象提供了一个用于执行SQL命令和查询的接口,并允许访问查询结果。简而言之,游标对象是Python数据库编程中的一个核心组件,它提供了一种结构化和高效的方式来执行SQL命令、管理事务和处理查询结果。可以使用close()关闭游标对象。

如果所有的操作都在一个数据库中进行

con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456',   # 密码
    database = '数据库名'
)

# 选择数据库
# con.select_db('mq')

 创建数据库

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)

# 创建一个游标对象
cursor = con.cursor()

# 创建数据库
create_DB = "CREATE DATABASE IF NOT EXISTS mql"

cursor.execute(create_DB)

# 关闭连接
con.close()

查看所有数据库

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)

# 创建一个游标对象
cursor = con.cursor()

# 查看所有数据库
show_DB = "SHOW DATABASES"

sdb = cursor.execute(show_DB)
print(sdb)
# 6 数据库个数

for db in cursor.fetchall():
    print(db)
"""
('information_schema',)
('mq',)
('mql',)
('mysql',)
('performance_schema',)
('sys',)
"""

# 关闭连接
con.close()

删除数据库

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)

# 创建一个游标对象
cursor = con.cursor()

# 删除数据库
drop_DB = "DROP DATABASE IF EXISTS mq1"

cursor.execute(drop_DB)

# 关闭连接
con.close()

选择数据库

select_DB= "USE mq"
cursor.execute(select_DB)

查看当前选择的数据库

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)

# 创建一个游标对象
cursor = con.cursor()

# 选择数据库
con.select_db('mq')

# 查看当前选择的数据库
show_selected_DB = "SELECT DATABASE()"

cursor.execute(show_selected_DB)

print(cursor.fetchone())
# ('mq',)

# 关闭连接
con.close()
​

建表

注意事项:表名、字段名用反引号包围

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456',   # 密码
    autocommit = True     # 设置自动提交
)

# 创建一个游标对象
cursor = con.cursor()

# 选择数据库
con.select_db('mq')

# 建表
set_Table = """
CREATE TABLE `stu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

"""

cursor.execute(set_Table)

# 关闭连接
con.close()

删除表

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)

# 创建一个游标对象
cursor = con.cursor()

# 选择数据库
con.select_db('mq')

# 删除表的SQL语句
drop_table = "DROP TABLE IF EXISTS `stu`"

# 执行删除表的操作
cursor.execute(drop_table)

# 关闭连接
con.close()

查询数据

在mq数据库下有一张student表

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)

# 创建一个游标对象
cursor = con.cursor()

# 选择数据库
con.select_db('mq')

# 查询student表
cursor.execute("select * from student")

data = cursor.fetchall()

# print(data)
"""
(('小九', 16, 1007), ('小凡', 19, 1003), ('小刚', 23, 1005), 
('小团', 21, 1004), ('小玉', 19, 1008), ('小王', 18, 1001), 
('小花', 20, 1002), ('小菜', 17, 1006))
"""

for d  in data:
    print(d)
"""
('小九', 16, 1007)
('小凡', 19, 1003)
('小刚', 23, 1005)
('小团', 21, 1004)
('小玉', 19, 1008)
('小王', 18, 1001)
('小花', 20, 1002)
('小菜', 17, 1006)

"""
# 关闭连接
con.close()

数据插入

在执行插入操作后,需要调用commit()方法来提交事务。否则,更改将不会永久保存到数据库中。

from pymysql import Connection
con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456'    # 密码
)

# 创建一个游标对象
cursor = con.cursor()

# 选择数据库
con.select_db('mq')

# 插入数据
cursor.execute('insert into student values("小吉",18,1009)')

# 调用commit()方法来提交事务
con.commit()

# 关闭连接
con.close()

此时已插入成功

可以通过设置参数autocommit,省去手动确认。

con = Connection(
    host = 'localhost',    # 主机名(ip)
    port = 3306,           # 端口
    user = 'root',         # 账户
    password = '123456',   # 密码
    autocommit = True     # 设置自动提交
)

 Python操作MongoDB数据库

在Python中操作MongoDB需要使用pymongo库

pip install pymongo
from pymongo import MongoClient
# 连接数据库
client = MongoClient()
# 第二种:MongoClient('127.0.0.1',27017)
# 第三种:MongoClient('mongodb://127.0.0.1:27017')

# 查看数据库
print(client.list_database_names())
# ['admin', 'config', 'local', 'mydb', 'mymgdb']

# 选择数据库
db = client['mymgdb']
# db = client.get_database('config')
# db = client.config

# 选择集合
collection = db['films']
# print(collection)
# Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mymgdb'), 'films')

# 查询集合中的文档
for document in collection.find():
    print(document)
    
# 更新集合中的文档
collection.update_one({'name': '天龙八部'}, {'$set': {'ticket': 10000}})

# 删除集合中的文档
collection.delete_one({'name': '流浪地球2.0'})

# 关闭连接
client.close()

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值