当前位置:首页 >时尚 >不懂Python ORM操作MySQL和SQLite?别怕,跟我学吧! 每个表格包含多个列和多个行

不懂Python ORM操作MySQL和SQLite?别怕,跟我学吧! 每个表格包含多个列和多个行

2024-06-28 11:36:37 [百科] 来源:避面尹邢网

不懂Python ORM操作MySQL和SQLite?别怕,不懂e别跟我学吧!怕跟

作者:你的不懂e别老师父 数据库 MySQL SQL(Structured Query Language)是一种用于访问和管理数据库的标准语言,它支持数据的怕跟查询、插入、不懂e别更新和删除等操作。怕跟SQL语言可以分为数据定义语言(DDL)、不懂e别数据操作语言(DML)、怕跟数据控制语言(DCL)和数据查询语言(DQL)等。不懂e别

数据库基础概念

数据库是怕跟一种用于存储和管理数据的软件系统,它可以存储和管理结构化数据、不懂e别半结构化数据和非结构化数据等。怕跟数据库中的不懂e别数据通常以表格的形式组织,每个表格包含多个列和多个行。怕跟表格中的不懂e别列定义了数据的类型和属性,行表示实际的数据记录。

不懂Python ORM操作MySQL和SQLite?别怕,跟我学吧! 每个表格包含多个列和多个行

SQL(Structured Query Language)是一种用于访问和管理数据库的标准语言,它支持数据的查询、插入、更新和删除等操作。SQL语言可以分为数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和数据查询语言(DQL)等。

不懂Python ORM操作MySQL和SQLite?别怕,跟我学吧! 每个表格包含多个列和多个行

在Python中,我们可以使用各种库和框架来操作和管理数据库,例如使用MySQL、SQLite等关系型数据库,使用MongoDB等非关系型数据库,使用SQLAlchemy等ORM框架。

不懂Python ORM操作MySQL和SQLite?别怕,跟我学吧! 每个表格包含多个列和多个行

MySQL

MySQL是一种流行的关系型数据库管理系统,它支持多种操作系统和编程语言,并且具有高性能、可靠性和扩展性等优点。

在Python中,我们可以使用mysql-connector-python或pymysql等库来连接和操作MySQL数据库。

安装MySQL

在使用MySQL之前,我们需要先安装和配置MySQL。

在Linux系统中,可以使用以下命令来安装MySQL:

sudo apt-get install mysql-server

在Windows系统中,可以从MySQL官网下载安装程序进行安装。

安装完成后,我们需要创建一个MySQL用户,并为该用户授权访问数据库。可以使用以下命令来创建用户和授权:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';

在上面的命令中,'username'和'password'分别表示要创建的MySQL用户的用户名和密码。

连接MySQL

在Python中,可以使用mysql-connector-python或pymysql等库来连接MySQL数据库。

以下是一个使用mysql-connector-python连接MySQL数据库的示例:

import mysql.connectormydb = mysql.connector.connect(  host="localhost",  user="username",  password="password")print(mydb)

在上面的示例中,我们创建了一个名为mydb的MySQL连接,并打印了该连接对象。

创建数据库和表格

在MySQL中,可以使用CREATE DATABASE语句来创建数据库,使用CREATE TABLE语句来创建表格。

以下是一个使用mysql-connector-python创建数据库和表格的示例:

import mysql.connectormydb = mysql.connector.connect(  host="localhost",  user="username",  password="password")mycursor = mydb.cursor()mycursor.execute("CREATE DATABASE mydatabase")mycursor.execute("USE mydatabase")mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), address VARCHAR(255))")

在上面的示例中,我们首先创建了一个名为mydatabase的数据库,然后使用USE语句选择该数据库。接着,我们创建了一个名为customers的表格,其中包含三个列:id、name和address。

插入数据

在MySQL中,可以使用INSERT INTO语句向表格中插入数据。

以下是一个使用mysql-connector-python向表格中插入数据的示例:

import mysql.connectormydb = mysql.connector.connect(  host="localhost",  user="username",  password="password",  database="mydatabase")mycursor = mydb.cursor()sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"val = ("John", "Highway 21")mycursor.execute(sql, val)mydb.commit()print(mycursor.rowcount, "record inserted.")

在上面的示例中,我们向customers表格中插入了一条记录,其中包含name和address两个列的值。

查询数据

在MySQL中,可以使用SELECT语句查询表格中的数据。

以下是一个使用mysql-connector-python查询数据的示例:

import mysql.connectormydb = mysql.connector.connect(  host="localhost",  user="username",  password="password",  database="mydatabase")mycursor = mydb.cursor()mycursor.execute("SELECT * FROM customers")myresult = mycursor.fetchall()for x in myresult:  print(x)

在上面的示例中,我们使用SELECT语句查询customers表格中的所有数据,并使用fetchall方法获取查询结果。最后,我们使用for循环遍历查询结果并打印。

更新数据

在MySQL中,可以使用UPDATE语句更新表格中的数据。

以下是一个使用mysql-connector-python更新数据的示例:

import mysql.connectormydb = mysql.connector.connect(  host="localhost",  user="username",  password="password",  database="mydatabase")mycursor = mydb.cursor()sql = "UPDATE customers SET address = 'Canyon 123' WHERE name = 'John'"mycursor.execute(sql)mydb.commit()print(mycursor.rowcount, "record(s) affected")

在上面的示例中,我们使用UPDATE语句将customers表格中name为John的记录的address列更新为Canyon 123。

删除数据

在MySQL中,可以使用DELETE语句删除表格中的数据。

以下是一个使用mysql-connector-python删除数据的示例:

import mysql.connectormydb = mysql.connector.connect(  host="localhost",  user="username",  password="password",  database="mydatabase")mycursor = mydb.cursor()sql = "DELETE FROM customers WHERE name = 'John'"mycursor.execute(sql)mydb.commit()print(mycursor.rowcount, "record(s) deleted")

在上面的示例中,我们使用DELETE语句删除customers表格中name为John的记录。

SQLite

SQLite是一种轻量级的关系型数据库管理系统,它不需要独立的服务器进程或系统,数据存储在本地文件中,适合于嵌入式设备和小型应用程序等场景。

在Python中,我们可以使用sqlite3库来连接和操作SQLite数据库。

连接SQLite

以下是一个使用sqlite3连接SQLite数据库的示例:

import sqlite3conn = sqlite3.connect('example.db')

在上面的示例中,我们创建了一个名为example.db的SQLite连接。

创建表格

在SQLite中,可以使用CREATE TABLE语句创建表格。

以下是一个使用sqlite3创建表格的示例:

import sqlite3conn = sqlite3.connect('example.db')c = conn.cursor()c.execute('''CREATE TABLE stocks             (date text, trans text, symbol text, qty real, price real)''')

在上面的示例中,我们创建了一个名为stocks的表格,其中包含五个列:date、trans、symbol、qty和price。

插入数据

在SQLite中,可以使用INSERT INTO语句向表格中插入数据。

以下是一个使用sqlite3向表格中插入数据的示例:

import sqlite3conn = sqlite3.connect('example.db')c = conn.cursor()c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")conn.commit()

在上面的示例中,我们向stocks表格中插入了一条记录,其中包含五个列的值。

查询数据

在SQLite中,可以使用SELECT语句查询表格中的数据。

以下是一个使用sqlite3查询数据的示例:

import sqlite3conn = sqlite3.connect('example.db')c = conn.cursor()for row in c.execute('SELECT * FROM stocks ORDER BY price'):    print(row)

在上面的示例中,我们使用SELECT语句查询stocks表格中的所有数据,并按price列进行排序。最后,我们使用for循环遍历查询结果并打印。

更新数据

在SQLite中,可以使用UPDATE语句更新表格中的数据。

以下是一个使用sqlite3更新数据的示例:

import sqlite3conn = sqlite3.connect('example.db')c = conn.cursor()c.execute("UPDATE stocks SET qty = 200 WHERE symbol = 'RHAT'")conn.commit()print("Number of rows updated: ", conn.total_changes)

在上面的示例中,我们使用UPDATE语句将stocks表格中symbol为RHAT的记录的qty列更新为200。

删除数据

在SQLite中,可以使用DELETE语句删除表格中的数据。

以下是一个使用sqlite3删除数据的示例:

import sqlite3conn = sqlite3.connect('example.db')c = conn.cursor()c.execute("DELETE FROM stocks WHERE symbol = 'RHAT'")conn.commit()print("Number of rows deleted: ", conn.total_changes)

在上面的示例中,我们使用DELETE语句删除stocks表格中symbol为RHAT的记录。

ORM框架

ORM(Object-Relational Mapping)框架是一种将对象模型和关系模型进行映射的技术,它可以将数据库中的表格映射为Python中的类,将表格中的列映射为类的属性,从而使得我们可以使用面向对象的方式来操作数据库。

在Python中,SQLAlchemy是一个流行的ORM框架,它支持多种关系型数据库,包括MySQL、SQLite、PostgreSQL等。

安装SQLAlchemy

在使用SQLAlchemy之前,我们需要先安装SQLAlchemy。

可以使用以下命令来安装SQLAlchemy:

pip install sqlalchemy

连接数据库

在SQLAlchemy中,可以使用create_engine函数创建一个数据库连接对象。

以下是一个使用SQLAlchemy连接MySQL数据库的示例:

from sqlalchemy import create_engineengine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")

在上面的示例中,我们创建了一个名为engine的MySQL连接对象。

以下是一个使用SQLAlchemy连接SQLite数据库的示例:

from sqlalchemy import create_engineengine = create_engine("sqlite:///example.db")

在上面的示例中,我们创建了一个名为engine的SQLite连接对象。

定义数据模型

在SQLAlchemy中,可以使用declarative_base函数定义一个基本的数据模型类,从而建立数据库中表格和Python中类的映射关系。

以下是一个使用SQLAlchemy定义数据模型的示例:

from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, StringBase = declarative_base()class Customer(Base):    __tablename__ = 'customers'    id = Column(Integer, primary_key=True)    name = Column(String(255))    address = Column(String(255))

在上面的示例中,我们定义了一个名为Customer的数据模型类,表示数据库中的customers表格。该类继承自Base类,其中包含三个属性:id、name和address。

创建表格

在SQLAlchemy中,可以使用Base类的metadata属性和create_all方法来创建表格。

以下是一个使用SQLAlchemy创建表格的示例:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerengine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")Session = sessionmaker(bind=engine)from models import Base, CustomerBase.metadata.create_all(engine)

在上面的示例中,我们使用Base.metadata属性和create_all方法创建了数据库中的表格。其中,engine对象表示了连接到数据库的引擎,Base类表示了数据模型类的基类,Customer类表示了要创建的数据模型类。

插入数据

在SQLAlchemy中,可以使用Session类和add方法向表格中插入数据。

以下是一个使用SQLAlchemy向表格中插入数据的示例:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerengine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")Session = sessionmaker(bind=engine)from models import Customersession = Session()customer1 = Customer(name='John', address='Highway 21')customer2 = Customer(name='Bob', address='Main Street')session.add(customer1)session.add(customer2)session.commit()session.close()

在上面的示例中,我们使用Session类创建了一个名为session的会话对象,然后创建了两个名为customer1和customer2的Customer对象,并使用add方法将它们添加到会话对象中。最后,我们使用commit方法提交会话,并关闭会话对象。

查询数据

在SQLAlchemy中,可以使用Session类和query方法查询表格中的数据。

以下是一个使用SQLAlchemy查询数据的示例:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerengine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")Session = sessionmaker(bind=engine)from models import Customersession = Session()customers = session.query(Customer).all()for customer in customers:    print(customer.name, customer.address)session.close()

在上面的示例中,我们使用Session类创建了一个名为session的会话对象,然后使用query方法查询了customers表格中的所有数据,并使用all方法获取查询结果。最后,我们使用for循环遍历查询结果并打印。注意,在使用SQLAlchemy查询数据时,我们并没有直接使用SQL语句,而是使用了Python的面向对象方式。

更新数据

在SQLAlchemy中,可以使用Session类和commit方法更新表格中的数据。

以下是一个使用SQLAlchemy更新数据的示例:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerengine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")Session = sessionmaker(bind=engine)from models import Customersession = Session()customer = session.query(Customer).filter_by(name='John').first()customer.address = 'Highway 22'session.commit()session.close()

在上面的示例中,我们使用Session类创建了一个名为session的会话对象,然后使用query方法查询了customers表格中name为John的数据,并使用first方法获取查询结果的第一个元素。接着,我们将该元素的address属性更新为'Highway 22',最后使用commit方法提交更新,并关闭会话对象。

删除数据

在SQLAlchemy中,可以使用Session类和commit方法删除表格中的数据。

以下是一个使用SQLAlchemy删除数据的示例:

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerengine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")Session = sessionmaker(bind=engine)from models import Customersession = Session()customer = session.query(Customer).filter_by(name='John').first()session.delete(customer)session.commit()session.close()

在上面的示例中,我们使用Session类创建了一个名为session的会话对象,然后使用query方法查询了customers表格中name为John的数据,并使用first方法获取查询结果的第一个元素。接着,我们使用delete方法删除该元素,并使用commit方法提交删除,并关闭会话对象。

总之,SQLAlchemy是一个强大的ORM框架,它提供了丰富的功能,可以大大简化Python和关系型数据库之间的交互。

责任编辑:姜华 来源: 今日头条 MySQLSQLite

(责任编辑:热点)

    推荐文章
    热点阅读