"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تمرير المعلمات إلى pandas read_sql مع استعلامات SQL؟

كيفية تمرير المعلمات إلى pandas read_sql مع استعلامات SQL؟

نشر في 2025-03-04
تصفح:688

How to Pass Parameters to pandas read_sql with SQL Queries?

pandas read_sql مع استعلامات sql المعلمة

وظيفة pandas.read_sql هي أداة قوية لجلب البيانات من قواعد البيانات. عند العمل مع محركات SQLalChemy ، يعد تمرير المعلمات بفعالية إلى استعلامات SQL أمرًا بالغ الأهمية. يوضح هذا الدليل نهجين شائعين: المعلمات الموضعية والمسمى.

الطريقة 1: المعلمات الموضعية

تستخدم هذه الطريقة قائمة أو tuple لتزويد المعلمات باستعلام SQL الخاص بك. يتم استبدال العناصر النائبة في عبارة SQL ( ٪ S ) بالتتابع بالعناصر الموجودة في قائمة المعلمات.

مثال:

import pandas as pd
from datetime import datetime

# ... (database connection setup using SQLAlchemy) ...

query = ('SELECT "Timestamp", "Value" FROM "MyTable" '
         'WHERE "Timestamp" BETWEEN %s AND %s')
params = [datetime(2014, 6, 24, 16, 0), datetime(2014, 6, 24, 17, 0)]

df = pd.read_sql(query, db, params=params, index_col=['Timestamp'])

الطريقة 2: المعلمات المسماة

توفر المعلمات المسماة قابلية للقراءة بشكل أفضل. ومع ذلك ، فإن بناء الجملة المدعوم يعتمد على برنامج تشغيل قاعدة البيانات. مع Sqlalchemy و Psycopg2 ، فإن ٪ (name) s ضروري.

مثال:

import pandas as pd
from datetime import datetime

# ... (database connection setup using SQLAlchemy) ...

query = ('SELECT "Timestamp", "Value" FROM "MyTable" '
         'WHERE "Timestamp" BETWEEN %(dstart)s AND %(dfinish)s')
params = {"dstart": datetime(2014, 6, 24, 16, 0), "dfinish": datetime(2014, 6, 24, 17, 0)}

df = pd.read_sql(query, db, params=params, index_col=['Timestamp'])

ملاحظة مهمة: تحقق دائمًا من وثائق برنامج تشغيل قاعدة البيانات لتأكيد بناء جملة المعلمة الصحيحة. سيؤدي استخدام بناء الجملة الخاطئ إلى أخطاء الاستعلام. هذا يضمن تنفيذ استفساراتك المعلمة بشكل صحيح وأمان.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3