يمكن أن يكون تطوير الواجهة الأمامية مهمة شاقة، وحتى كابوسية، بالنسبة للمطورين الذين يركزون على الواجهة الخلفية. في بداية مسيرتي المهنية، كانت الخطوط الفاصلة بين الواجهة الأمامية والواجهة الخلفية غير واضحة، وكان من المتوقع من الجميع التعامل مع كليهما. كان CSS، على وجه الخصوص، صراعًا مستمرًا؛ شعرت وكأنها مهمة مستحيلة.
على الرغم من أنني أستمتع بالعمل على الواجهة الأمامية، إلا أن CSS تظل تحديًا معقدًا بالنسبة لي، خاصة وأنني تعلمتها من خلال التجربة والخطأ. إن الميم الذي يكافح فيه بيتر جريفين لفتح الستائر المبدئية يجسد بشكل مثالي تجربتي في تعلم CSS.
ولكن اليوم تغير كل شيء. لقد أحدثت أدوات مثل Streamlit ثورة في اللعبة بالنسبة للمطورين مثلي، الذين يفضلون الراحة التي توفرها الشاشة السوداء للمحطة الطرفية. لقد ولت أيام الصراع مع سطور التعليمات البرمجية التي تبدو وكأنها رسائل مشفرة من كائنات فضائية (ينظرون إليك، CSS!).
كما يقول الدكتور كارولي زسولناي-فيهر من Two Minute Papers دائمًا، "يا له من وقت لتكون على قيد الحياة!"
مع Streamlit، يمكنك إنشاء تطبيق ويب كامل باستخدام رمز Python فقط.
هل تريد رؤيتها على أرض الواقع؟ استعدوا، لأنني على وشك مشاركة محاولتي لإنشاء الواجهة الأمامية لـ SQLZilla باستخدام هذه الأداة الرائعة.
لتثبيته، ما عليك سوى فتح المحطة الطرفية وإلقاء هذه التعويذة:
pip install streamlit
(أو يمكنك إضافته إلى ملف require.txt الخاص بك.)
قم بإنشاء ملف، app.py وأضف مقتطف التعليمات البرمجية هذا لعرض عنوان "SQLZilla":
import streamlit as st st.title("SQLZilla")
قم بتشغيل العرض!
افتح جهازك مرة أخرى واكتب هذا الأمر لتنشيط الإنشاء:
streamlit run app.py
فويلا! يجب أن يظهر تطبيق Streamlit الخاص بك في متصفح الويب الخاص بك، ويعرض بفخر العنوان "SQLZilla".
أضف صورة باستخدام طريقة الصورة، لمركزها، قمت فقط بإنشاء 3 أعمدة وأضفها في المنتصف (عار علي)
st.title("SQLZilla") left_co, cent_co, last_co = st.columns(3) with cent_co: st.image("small_logo.png", use_column_width=True)
لإدارة التكوينات ونتائج الاستعلام، يمكنك استخدام حالة الجلسة. إليك كيفية حفظ قيم التكوين وتخزين نتائج الاستعلام:
if 'hostname' not in st.session_state: st.session_state.hostname = 'sqlzilla-iris-1' if 'user' not in st.session_state: st.session_state.user = '_system' if 'pwd' not in st.session_state: st.session_state.pwd = 'SYS' # Add other session states as needed
لربط SQLZilla بقاعدة بيانات InterSystems IRIS، يمكنك استخدام SQLAlchemy. أولاً، قم بتثبيت SQLAlchemy باستخدام:
pip install sqlalchemy
ثم قم بإعداد الاتصال في ملف app.py الخاص بك:
from sqlalchemy import create_engine import pandas as pd # Replace with your own connection details engine = create_engine(f"iris://{user}:{password}@{host}:{port}/{namespace}") def run_query(query): with engine.connect() as connection: result = pd.read_sql(query, connection) return result
بمجرد الاتصال بقاعدة البيانات، يمكنك استخدام Pandas وStreamlit لعرض نتائج استفساراتك. فيما يلي مثال لكيفية عرض DataFrame في تطبيق Streamlit الخاص بك:
if 'query' in st.session_state: query = st.session_state.query df = run_query(query) st.dataframe(df)
لجعل تطبيقك أكثر تفاعلية، يمكنك استخدام st.rerun() لتحديث التطبيق كلما تغير الاستعلام:
if 'query' in st.session_state and st.button('Run Query'): df = run_query(st.session_state.query) st.dataframe(df) st.rerun()
يمكنك العثور على مكونات Streamlit المختلفة لاستخدامها. في SQLZilla، قمت بإضافة إصدار محرر كود ACE يسمى محرر التعليمات البرمجية المبسط:
from code_editor import code_editor editor_dict = code_editor(st.session_state.code_text, lang="sql", height=[10, 100], shortcuts="vscode") if len(editor_dict['text']) != 0: st.session_state.code_text = editor_dict['text']
نظرًا لأن مساعد SQLZilla مكتوب بلغة Python، فقد قمت للتو باستدعاء الفصل:
from sqlzilla import SQLZilla def assistant_interaction(sqlzilla, prompt): response = sqlzilla.prompt(prompt) st.session_state.chat_history.append({"role": "user", "content": prompt}) st.session_state.chat_history.append({"role": "assistant", "content": response}) if "SELECT" in response.upper(): st.session_state.query = response return response
تهانينا! لقد قمت ببناء SQLZilla الخاصة بك. استمر في استكشاف Streamlit وحسّن تطبيقك بمزيد من الميزات. وإذا كنت تحب SQLZilla، قم بالتصويت لهذا المساعد الرائع الذي يحول النص إلى استعلامات!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3