Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pintasan kepada operasi pangkalan data Python: elakkan lencongan dan capai kemuncak operasi pangkalan data

Pintasan kepada operasi pangkalan data Python: elakkan lencongan dan capai kemuncak operasi pangkalan data

王林
王林ke hadapan
2024-02-19 22:51:10889semak imbas

Pintasan kepada operasi pangkalan data Python: elakkan lencongan dan capai kemuncak operasi pangkalan data

Apabila menggunakan python untuk melaksanakan operasi pangkalan data, kami sering menghadapi beberapa ralat dan masalah biasa. Ralat dan masalah ini bukan sahaja menjejaskan kualiti dan kecekapan pengendalian kod, tetapi juga menyukarkan untuk nyahpepijat dan diselenggara. Untuk membantu anda mengelakkan masalah ini, artikel ini akan memberikan beberapa petua dan kiat berharga untuk membantu anda meningkatkan kemahiran operasi pangkalan data anda, dengan itu meningkatkan kecekapan kerja dan kualiti projek.

  1. Gunakan pertanyaan berparameter untuk mengelakkan serangan suntikan sql. Serangan suntikan SQL ialah kerentanan keselamatan biasa yang membenarkan penyerang mengakses atau merosakkan pangkalan data dengan menyuntik kod hasad ke dalam pertanyaan SQL. Untuk mengelakkan serangan suntikan SQL, pernyataan SQL harus dibina menggunakan pertanyaan berparameter. Pertanyaan berparameter boleh menghalang penyerang daripada menyuntik kod berniat jahat dalam pernyataan SQL, dengan itu memastikan keselamatan pangkalan data.
import Mysql.connector

# 建立数据库连接
connection = mysql.connector.connect(host="localhost",
 database="mydb",
 user="user",
 passWord="password")

# 创建游标
cursor = connection.cursor()

# 使用参数化查询来查询数据
sql = "SELECT * FROM users WHERE username=%s"
param = ("john",)

# 执行查询
cursor.execute(sql, param)

# 获取查询结果
result = cursor.fetchall()

# 打印查询结果
for row in result:
print(row)

# 关闭游标和数据库连接
cursor.close()
connection.close()
  1. Gunakan Transaksi untuk memastikan ketekalan data. Urus niaga ialah urutan atom operasi yang sama ada berjaya diselesaikan atau dibatalkan sepenuhnya. Menggunakan transaksi memastikan konsistensi data walaupun terdapat ralat atau kegagalan sistem. Dalam Python, anda boleh menggunakan with penyata untuk mengurus urus niaga.
import mysql.connector

# 建立数据库连接
connection = mysql.connector.connect(host="localhost",
 database="mydb",
 user="user",
 password="password")

# 创建游标
cursor = connection.cursor()

# 启动事务
cursor.start_transaction()

try:
# 执行SQL语句
sql = "UPDATE users SET balance=balance+100 WHERE username=%s"
param = ("john",)
cursor.execute(sql, param)

# 提交事务
connection.commit()
except:
# 回滚事务
connection.rollback()

# 关闭游标和数据库连接
cursor.close()
connection.close()
  1. Gunakan pengumpulan sambungan untuk meningkatkan prestasi sambungan pangkalan data. Pengumpulan sambungan ialah kumpulan sambungan pangkalan data pra-dicipta yang meningkatkan prestasi sambungan pangkalan data. Dalam Python, anda boleh menggunakan kelas pymysql库中的ConnectionPool untuk membuat kolam sambungan.
from pymysql import ConnectionPool

# 创建连接池
connection_pool = ConnectionPool(host="localhost",
database="mydb",
user="user",
password="password",
max_connections=5)

# 获取连接
connection = connection_pool.get_connection()

# 创建游标
cursor = connection.cursor()

# 执行SQL语句
sql = "SELECT * FROM users WHERE username=%s"
param = ("john",)
cursor.execute(sql, param)

# 获取查询结果
result = cursor.fetchall()

# 打印查询结果
for row in result:
print(row)

# 关闭游标和连接
cursor.close()
connection.close()
  1. Gunakan ORMrangka kerja untuk memudahkan operasi pangkalan data. Rangka kerja ORM ialah rangka kerja pemetaan hubungan objek yang memetakan data dalam pangkalan data hubungan ke objek Python. Menggunakan rangka kerja ORM boleh memudahkan operasi pangkalan data dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dalam Python, anda boleh menggunakan perpustakaan sqlalchemy untuk menggunakan rangka kerja 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://user:password@localhost/mydb")

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

# 定义模型
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
username = Column(String(20))
balance = Column(Integer)

# 查询数据
user = session.query(User).filter_by(username="john").first()

# 更新数据
user.balance += 100
session.commit()

# 关闭会话
session.close()
  1. Sandarkan pangkalan data anda dengan kerap untuk mengelakkan kehilangan data. Menyandarkan pangkalan data anda secara berkala boleh menghalang kehilangan data. Dalam Python, anda boleh menggunakan arahan mysqldump untuk membuat sandaran pangkalan data.
mysqldump -u user -p password mydb > backup.sql

Atas ialah kandungan terperinci Pintasan kepada operasi pangkalan data Python: elakkan lencongan dan capai kemuncak operasi pangkalan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:lsjlt.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam