python MySQL数据库

1.安装MySQLdb或PyMySQL模块
pip install PyMySQL

pip install MySQLdb

2.简单连接mysql

点击查看代码
import pymysql

conn = pymysql.connect(host='172.17.10.52', user='python', password='radhat', database='nova', port=3306)
# 使用cursor()方法获取操作游标
cursor = conn.cursor()
#执行查询执指令
cursor.execute('SELECT * FROM instances')
#返回结果
result = cursor.fetchall()
print(result)
# 关闭数据库连接
cursor.close()
conn.close()

2.Mysql数据类型

数值类型:包括整型、浮点型、双精度型等。
字符串类型:包括定长字符串、变长字符串、文本类型等。
日期和时间类型:包括日期、时间、日期时间等。
布尔类型:包括真和假两种值。
二进制类型:包括二进制数据、图像、音频等。
枚举类型:包括一组预定义的值。
集合类型:包括一组预定义的值,但可以选择多个。

3.MySQL数据库中,约束是用于限制表中数据的规则

NOT NULL约束:该约束用于确保列中的值不为空。
UNIQUE约束:该约束用于确保列中的值是唯一的。
PRIMARY KEY约束:该约束用于将列设置为主键,确保每行数据都有唯一的标识符。
FOREIGN KEY约束:该约束用于确保列中的值与另一个表中的值匹配,通常用于建立表之间的关系。
CHECK约束:该约束用于确保列中的值符合指定的条件。
DEFAULT约束:该约束用于在插入新行时为列提供默认值。

例如,以下是一个包含约束的MySQL表的示例:

点击查看代码
CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT CHECK (age >= 18),
  email VARCHAR(50) UNIQUE,
  major_id INT,
  FOREIGN KEY (major_id) REFERENCES majors(id)
);
在上面的示例中,id列被设置为主键,确保每行数据都有唯一的标识符。name列被设置为NOT NULL,确保该列中的值不为空。age列被设置为CHECK约束,确保该列中的值大于或等于18。email列被设置为UNIQUE约束,确保该列中的值是唯一的。major_id列被设置为FOREIGN KEY约束,确保该列中的值与majors表中的id列匹配。

create database test;

CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT CHECK (age >= 18),
email VARCHAR(50) UNIQUE,
major_id INT
);

4.Python中操作MySQL数据库需要使用到MySQLdb或者pymysql等第三方库

创建表

sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,
         SEX CHAR(1),
         INCOME FLOAT )"""

cursor.execute(sql)

插入数据

# 插入数据
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""

cursor.execute(sql)

查询数据

sql = "SELECT * FROM EMPLOYEE WHERE INCOME > %s" % (1000)
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
    fname = row[0]
    lname = row[1]
    age = row[2]
    sex = row[3]
    income = row[4]
    print("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % (fname, lname, age, sex, income))

更新数据

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
cursor.execute(sql)

删除数据

sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
cursor.execute(sql)

MySQL ORM框架-SQLAIchemy
SQLAlchemy是一个Python SQL工具包和ORM框架,它提供了一组广泛的工具,使得在Python中使用SQL更加容易和灵活。SQLAlchemy的主要目标是为SQL数据库提供高效、高性能的访问,并支持多种关系型数据库,如MySQL、PostgreSQL、Oracle、Microsoft SQL Server等。

SQLAlchemy的ORM框架提供了一种将Python对象映射到关系型数据库表的方法,使得开发人员可以使用Python语言来操作数据库,而不必直接使用SQL语言。ORM框架可以自动创建数据库表、插入数据、更新数据、删除数据等操作,同时还支持事务、连接池、缓存等高级功能。
下面是一个使用SQLAlchemy ORM框架的示例:


from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 创建数据库连接
engine = create_engine('mysql+pymysql://username:password@host:port/database')

# 创建Session类
Session = sessionmaker(bind=engine)

# 创建Base类
Base = declarative_base()

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

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

# 创建Session实例
session = Session()

# 插入数据
user = User(name='Tom', age=20)
session.add(user)
session.commit()

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

# 更新数据
user = session.query(User).filter_by(name='Tom').first()
user.age = 21
session.commit()

# 删除数据
user = session.query(User).filter_by(name='Tom').first()
session.delete(user)
session.commit()

# 关闭Session
session.close()

原文链接:https://zhuanlan.zhihu.com/p/631900687

posted @   KuangZhuMing2  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示