成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不懂Python ORM操作MySQL和SQLite?別怕,跟我學吧!

數據庫 MySQL
SQL(Structured Query Language)是一種用于訪問和管理數據庫的標準語言,它支持數據的查詢、插入、更新和刪除等操作。SQL語言可以分為數據定義語言(DDL)、數據操作語言(DML)、數據控制語言(DCL)和數據查詢語言(DQL)等。

數據庫基礎概念

數據庫是一種用于存儲和管理數據的軟件系統,它可以存儲和管理結構化數據、半結構化數據和非結構化數據等。數據庫中的數據通常以表格的形式組織,每個表格包含多個列和多個行。表格中的列定義了數據的類型和屬性,行表示實際的數據記錄。

SQL(Structured Query Language)是一種用于訪問和管理數據庫的標準語言,它支持數據的查詢、插入、更新和刪除等操作。SQL語言可以分為數據定義語言(DDL)、數據操作語言(DML)、數據控制語言(DCL)和數據查詢語言(DQL)等。

在Python中,我們可以使用各種庫和框架來操作和管理數據庫,例如使用MySQL、SQLite等關系型數據庫,使用MongoDB等非關系型數據庫,使用SQLAlchemy等ORM框架。

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.connector

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

print(mydb)

在上面的示例中,我們創建了一個名為mydb的MySQL連接,并打印了該連接對象。

創建數據庫和表格

在MySQL中,可以使用CREATE DATABASE語句來創建數據庫,使用CREATE TABLE語句來創建表格。

以下是一個使用mysql-connector-python創建數據庫和表格的示例:

import mysql.connector

mydb = 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.connector

mydb = 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.connector

mydb = 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.connector

mydb = 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.connector

mydb = 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 sqlite3

conn = sqlite3.connect('example.db')

在上面的示例中,我們創建了一個名為example.db的SQLite連接。

創建表格

在SQLite中,可以使用CREATE TABLE語句創建表格。

以下是一個使用sqlite3創建表格的示例:

import sqlite3

conn = 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 sqlite3

conn = 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 sqlite3

conn = 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 sqlite3

conn = 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 sqlite3

conn = 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_engine

engine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")

在上面的示例中,我們創建了一個名為engine的MySQL連接對象。

以下是一個使用SQLAlchemy連接SQLite數據庫的示例:

from sqlalchemy import create_engine

engine = create_engine("sqlite:///example.db")

在上面的示例中,我們創建了一個名為engine的SQLite連接對象。

定義數據模型

在SQLAlchemy中,可以使用declarative_base函數定義一個基本的數據模型類,從而建立數據庫中表格和Python中類的映射關系。

以下是一個使用SQLAlchemy定義數據模型的示例:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = 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_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")
Session = sessionmaker(bind=engine)

from models import Base, Customer

Base.metadata.create_all(engine)

在上面的示例中,我們使用Base.metadata屬性和create_all方法創建了數據庫中的表格。其中,engine對象表示了連接到數據庫的引擎,Base類表示了數據模型類的基類,Customer類表示了要創建的數據模型類。

插入數據

在SQLAlchemy中,可以使用Session類和add方法向表格中插入數據。

以下是一個使用SQLAlchemy向表格中插入數據的示例:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")
Session = sessionmaker(bind=engine)

from models import Customer

session = 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_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")
Session = sessionmaker(bind=engine)

from models import Customer

session = 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_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")
Session = sessionmaker(bind=engine)

from models import Customer

session = 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_engine
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+mysqlconnector://username:password@localhost/mydatabase")
Session = sessionmaker(bind=engine)

from models import Customer

session = 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和關系型數據庫之間的交互。

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-03-22 09:10:28

NginxNginx 簡介服務器

2010-05-18 10:46:46

2022-02-16 09:42:33

Linuxapt命令軟件包

2020-11-26 11:25:44

VimLinuxPython IDE

2020-02-04 10:05:54

LinuxWeb命令

2023-03-31 11:14:13

java虛擬機指令

2020-02-03 14:45:50

LinuxWeb前端

2011-03-23 17:19:07

LAMPDiscuz

2017-12-21 15:03:31

PythonSQLiteMySQL

2020-02-05 09:20:37

LinuxWeb前端

2020-02-06 16:23:00

LinuxWeb前端

2019-05-17 15:48:16

神經網絡卷積神經網絡人工智能

2013-07-17 17:15:44

學習編程移動開發移動互聯網

2012-05-11 09:37:34

HTML5

2011-07-05 10:16:16

Qt 數據庫 SQLite

2010-03-03 17:10:57

Python操作Sql

2011-03-25 14:40:33

Nagios監控

2010-03-04 15:31:44

Python SQLI

2011-07-04 17:18:23

Qt SQLite 數據庫

2025-04-03 08:30:00

Python數據庫ORM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 最新免费av网站 | 91影库| 国产乡下妇女做爰 | 久久久久国产一区二区三区四区 | 久久这里只有精品首页 | 亚洲精品综合 | 亚洲天堂av在线 | 天堂久久久久久久 | 91精品国产色综合久久 | 久久精品一级 | 国产在线97 | 久久一 | 欧美日韩国产精品一区二区 | 欧美日韩三级 | 久久综合伊人一区二区三 | 成人福利在线 | 日韩欧美精品在线 | 国产精品色婷婷久久58 | 久久伊人一区二区 | 久久伊人精品一区二区三区 | 中文字幕免费在线 | 欧美不卡| 夜夜爽99久久国产综合精品女不卡 | 日韩国产在线 | 日韩不卡在线观看 | 欧美黄色一级毛片 | 二区高清 | 久久久精品天堂 | 欧美精品首页 | 一级毛片在线播放 | 日韩精品视频在线观看一区二区三区 | 99福利| 天天草天天操 | 日韩在线观看 | 久久久久久91| 久久在视频 | 欧美精品久久 | 久久99这里只有精品 | 国产成人综合亚洲欧美94在线 | 在线观看中文字幕av | 亚洲第一成人影院 |