python如何链接数据库?python如何对数据库进行操作?

数据库是每一个系统用来存储数据的地方,可以说,没有数据库,我们的系统就无法记录数据,从而导致每次用户登录时,都是一次性的,都不会有上次的登录记录以及数据信息:

那么python是如何操作链接并数据库的呢?

python常用的数据库操作库包括 sqlite3SQLAlchemypymysql 等:他们可以帮助我们链接数据库,大大节省源码开发的困难;下面将一一进行举例说明:

1、使用sqlite3进行数据库的链接

优点:

  • 用途: 适合小型、嵌入式数据库应用,常用于轻量级的桌面应用程序或原型开发。
  • 特点: 内置于 Python 标准库,易于使用,无需安装额外的数据库服务器。适合本地文件存储。
import sqlite3

# 连接到数据库(如果文件不存在会自动创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")

# 查询数据
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())

# 提交事务并关闭连接
conn.commit()
conn.close()

数据库连接流程主要是通过sqlite3.connect(数据库名称)进行指定数据库的链接,通过cursor = conn.cursor()创建执行线程,execute方法执行我们需要执行的sql语句,将全部sql执行完成后,进行事务的提交以及断开数据库的链接;

2、使用 SQLAlchemy

优点:

  • 用途: 适合需要ORM(对象关系映射)功能的应用,支持多种数据库后端,如 SQLite、MySQL、PostgreSQL 等。
  • 特点: 提供高层次的抽象,简化了数据库操作。适合复杂的数据库应用和开发中需要数据库抽象层的情况。
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建数据库引擎
engine = create_engine('sqlite:///example.db')
Base = declarative_base()

# 定义模型
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# 创建表
Base.metadata.create_all(engine)

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 插入数据
new_user = User(name='Bob', age=25)
session.add(new_user)
session.commit()

# 查询数据
users = session.query(User).all()
for user in users:
    print(user.id, user.name, user.age)

# 关闭会话
session.close()

3、使用 pymysql

优点:

  • 用途: 专门用于与 MySQL 数据库进行交互,适合需要连接和操作 MySQL 数据库的应用。
  • 特点: 是一个纯 Python 实现的 MySQL 驱动,直接操作 MySQL 数据库,适合 MySQL 专用的场景。
import pymysql

# 连接到数据库
conn = pymysql.connect(host='localhost', user='user', password='password', database='testdb')
cursor = conn.cursor()

# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT)''')

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Charlie', 35)")

# 查询数据
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())

# 提交事务并关闭连接
conn.commit()
conn.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新时代老农民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值