> 백엔드 개발 > 파이썬 튜토리얼 > Python의 ORM 프레임워크 데이터베이스에 대한 자세한 설명

Python의 ORM 프레임워크 데이터베이스에 대한 자세한 설명

WBOY
풀어 주다: 2023-06-11 13:34:37
원래의
2308명이 탐색했습니다.

최근 몇 년 동안 Python은 배우기 쉽고 사용하기 쉬우며 매우 유연한 프로그래밍 언어로 개발 분야에서 점점 인기를 얻고 있습니다. Python 애플리케이션에서 ORM(Object-Relational Mapping) 프레임워크는 개발 효율성을 크게 향상시킬 뿐만 아니라 개발자가 데이터 및 개체를 보다 쉽게 ​​관리할 수 있도록 하는 중요한 역할을 합니다.

ORM 프레임워크에서 데이터베이스 라이브러리는 개발 프로세스 중에 관계형 데이터베이스에 액세스하는 데 자주 사용되는 새로운 Python 라이브러리입니다. 이 라이브러리는 Python 개발 세계에서는 아직 상대적으로 새로운 것이지만 이미 큰 잠재력을 보여주었습니다. 따라서 이 기사에서는 개발자가 이 강력한 Python ORM 프레임워크를 더 잘 이해하고 배울 수 있도록 데이터베이스 라이브러리를 자세히 소개합니다.

1. 데이터베이스 개발 배경

데이터베이스 라이브러리는 비동기 SQL 데이터베이스 개발을 단순화하는 데 사용되는 경량 Python 라이브러리입니다. 비동기 프로그래밍을 위해 asyncio를 사용하며 PostgreSQL, MySQL, MariaDB, SQLite 등과 같은 다양한 SQL 데이터베이스 엔진과 함께 작동할 수 있습니다. 또한 데이터베이스 라이브러리는 매우 간결하고 사용하기 쉬운 API도 제공합니다.

데이터베이스 라이브러리의 목표는 개발자가 애플리케이션을 더 빠르게 구축하고 많은 반복 코드를 제거할 수 있도록 하는 것입니다. 성능 측면에서 매우 우수한 성능을 발휘하며 연결 ​​풀링, 트랜잭션 관리, 많은 비동기식 드라이버 개선 사항 및 도움말 문서와 같은 고급 기능을 제공합니다. 따라서 데이터베이스 라이브러리는 의심할 여지 없이 SQL 데이터베이스에 대한 공동 액세스가 필요한 복잡한 마이크로서비스 또는 대규모 웹 애플리케이션에 매우 좋은 선택입니다.

2. 데이터베이스의 핵심 기능

데이터베이스 라이브러리의 설계 목표는 개발자가 간단한 API를 사용하여 SQL 데이터베이스와 빠르게 상호 작용할 수 있도록 하는 것입니다. 아래에서는 데이터베이스 라이브러리의 몇 가지 핵심 기능을 소개합니다.

1. 코드가 간결하고 명확합니다.

데이터베이스 라이브러리는 Python의 간결한 구문을 사용하여 개발자의 개발 효율성을 극대화합니다. 비동기와 같은 Python의 모든 고급 기능을 구현할 수 있습니다. 및 동시 작업.

예를 들어 다음 코드는 "users"라는 테이블을 생성합니다. 그중 테이블의 여러 속성에는 ID, 이름, 나이 및 이메일이 포함됩니다.

import databases

database = databases.Database("sqlite:///example.db")

query = "CREATE TABLE users (ID INT PRIMARY KEY, Name TEXT, Age INT, Email TEXT)"

await database.execute(query=query)
로그인 후 복사

2. 협업 클라이언트 및 서버 API

데이터베이스 라이브러리는 비동기 및 동기 작업이 포함된 고급 API를 제공하므로 이를 사용할 때 이러한 작업을 통합할 수 있습니다.

import database

database = databases.Database("sqlite:///example.db")

# 异步操作(async)
async with database.transaction():
   query = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query, values=values)

# 同步操作
query = "SELECT * FROM users WHERE ID=:id"
values = {"id": 1}
result = database.fetch_one(query=query, values=values)
로그인 후 복사

3. 연결 풀

데이터베이스 라이브러리는 연결 풀 문제를 쉽게 관리하고 데이터베이스 액세스 효율성을 향상시킬 수 있습니다. 개발자가 데이터베이스 라이브러리를 사용할 때 연결 풀 크기만 지정하면 연결을 수동으로 관리할 필요 없이 자동화된 연결을 쉽게 구현할 수 있어 매우 편리합니다.

예를 들어 다음 코드에서는 데이터베이스 라이브러리가 연결 풀을 더 잘 관리할 수 있도록 최대 연결 수와 최소 연결 수를 지정할 수 있습니다.

import databases

database = databases.Database("sqlite:///example.db", min_size=1, max_size=10)
로그인 후 복사

4. 트랜잭션 관리

데이터베이스 라이브러리는 작업 수행 시 일관성과 신뢰성을 보장하기 위해 통합 트랜잭션 관리를 제공합니다. 트랜잭션은 개발자가 일괄적으로 작업을 수행할 수 있게 해주는 매우 중요한 DBMS 기능입니다.

예를 들어 아래 코드에서는 트랜잭션을 비동기식으로 시작하고 커밋하여 공동으로 데이터를 처리할 수 있습니다.

import databases

database = databases.Database("sqlite:///example.db")

async with database.transaction():
   query_1 = "INSERT INTO users (ID, Name, Age, Email) VALUES (:id, :name, :age, :email)"
   values_1 = {"id": 1, "name": "John Doe", "age": 23, "email": "[email protected]"}
   await database.execute(query=query_1, values=values_1)

   query_2 = "UPDATE users SET Age=:age WHERE ID=:id"
   values_2 = {"age": 25, "id": 1}
   await database.execute(query=query_2, values=values_2)

await database.commit()
로그인 후 복사

5. 여러 데이터베이스 엔진을 지원합니다.

데이터베이스 라이브러리는 MySQL, PostgreSQL, MariaDB 등을 포함한 여러 일반 데이터베이스 엔진을 지원합니다. 이를 통해 우리가 원하는 데이터베이스 환경을 쉽게 구축할 수 있습니다.

예를 들어 다음 코드 조각이 있으면 필요에 따라 일반적으로 사용되는 데이터베이스 엔진을 선택할 수 있습니다.

import databases

database = databases.Database("postgresql://user:[email protected]:5432/example")

三、使用Databases库

在学习使用Databases库之前,我们需要先进行库的安装工作。

1.安装Databases库

我们可以通过以下命令安装Databases库:
로그인 후 복사

pip 설치 데이터베이스

2.创建数据库连接

要使用Databases库,我们首先需要通过URL字符串为我们的PHP应用程序创建一个与数据库引擎的连接。
로그인 후 복사

import 데이터베이스
from 데이터베이스 import Database

database = Database("sqlite:///example.db")

3.查询数据

Databases库提供了8个异步和同步函数,可用于查询数据库: `fetch_all()`,`fetch_one()`, `fetch_val()`, `fetch_many()`, `fetch_optional()`, `execute()`, `execute_many()`和`iterate()`
로그인 후 복사

모든 행 쿼리

result = Database.fetch_all("SELECT * FROM users")

데이터의 첫 번째 행 쿼리

result = Database.fetch_one("SELECT * FROM users WHERE ID=:id", value = {"id": 1})

셀 데이터 가져오기

result = Database.fetch_val("SELECT Name FROM users WHERE ID=:id", value = {"id": 1})

여러 행의 데이터 가져오기

result = Database.fetch_many(query="SELECT * FROM users" , 값=[{'id':1}, {'id':2})

데이터가 없으면 None을 반환합니다.

result = Database.fetch_Optional(query="SELECT * FROM users WHERE ID=: id", value={"id": 3})

모든 쿼리 실행(삽입된 행 수 반환)

result = wait Database.execute("INSERT INTO users (ID,Name,Age,Email) VALUES ( :id,: 이름,:age,:email)",value={"id":5, "name":"John","age":25,"email":"[email protected]"})

일괄 모드에서 쿼리 실행(삽입된 행 수 반환)

result = wait Database.execute_many("INSERT INTO users (ID,Name,Age,Email) VALUES (:id,:name,:age,:email) )",values= [{"id":5, "name":"John","age":25,"email":"[email protected]"},{"id":6,"name": "Jack", " age":26,"email":"[email protected]"}])

비동기 반복자를 사용하여 데이터 처리

async with Database.connection() as Connection:
async with Connection.transaction( ):

   async for row in connection.iterate(query="SELECT * FROM users"):
      print(row)
로그인 후 복사
4.使用事务

Databases库还提供了事务管理的机制。我们可以使用异步with语句来绑定事务。如果with语句内的所有操作成功完成,则会提交事务。否则,事务将被回滚。
로그인 후 복사

async with Database.transaction():
query = "INSERT INTO users (ID,Name,Age,Email) VALUES (:id,:name,:age,:email)"
value = {"id ": 5, " name": "Hassen", "age": 26, "email": "[email protected]"}
wait Database.execute(query, value)

query = "user1(ID,이름,나이,이메일)에 삽입 VALUES(:id,:name,:age,:email)"
value = {"id": 6, "name": "Fatima", " age": 22, "email": "[email protected]"}
wait Database.execute(query, value)

위는 Python ORM 프레임워크의 Databases 라이브러리에 대한 자세한 소개입니다. 데이터베이스 라이브러리는 차세대 Python ORM 프레임워크로 간결한 코드 최적화, 비동기 통신 작업, 연결 풀 등과 같은 많은 뛰어난 기능을 갖추고 있어 개발자의 개발 효율성을 크게 향상시키고 뛰어난 성능을 촉진할 수 있습니다. 데이터베이스 라이브러리는 Python 개발 세계에서 여전히 상대적으로 새로운 것이지만 커뮤니티로부터 점점 더 많은 관심과 인정을 받고 있습니다. 우리는 이 라이브러리가 Python 개발자의 향후 작업에서 점점 더 중요한 역할을 할 것이라고 믿습니다.

위 내용은 Python의 ORM 프레임워크 데이터베이스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿