SQLAlchemy הוא קוד פתוח, פלטפורמת תוכנה עצמאי ספרייה וחופשית שנכתבה בשפת תכנות Python ותוכננה מהיסוד לפעול כספריית הפשטת מסד הנתונים, ORM (Object Relational Mapper) וערכת הכלים SQL עבור Python.
אם אתה & rsquo; מחדש מפתחי פייתון, SQLAlchemy תיתן לך גמישות מלאה וכוח של SQL, מתן אוסף של דפוסי התמדה ברמת הארגון הפופולרי, אשר היו מיועדים לaccess.Features מסד נתוני ביצועים גבוה ויעיל בתוכנת glanceThe מלא הוא מאוד קל לשימוש, חזק מספיק למשימות מתוחכמות, ומודולרי. עם SQLAlchemy תוכל לארגן תלויים ועומדים פעולות מגעילות, מאפשר שימוש בביטויים בוליאני, פונקציות, מפעילים, כינויי שולחן, סעיפי UNION, קורלציה קיים סעיפים, ליצור, להוסיף, למחוק ושאילתות עדכון, subqueries לבחירה, עדכונים מתואמים, ופנימי חיצוני מצטרף, ופרמטרים לאגד.
בנוסף, ניתן להשתמש בו כדי ליצור מסדי נתונים, כמו גם לintrospect, תמיכה באובייקטים הקשורים טעינה ואוספים, תמיכה ביצירת התמדה שקופה של אובייקטים המבוססים על דפוסים, תמיכה לתפעול ובניית מודלים תחום, כמו גם תמיכה בסנכרון כל השינויים בעסקה הנוכחית באופן אוטומטי.
בין שאר תכונות, אנחנו יכולים לדבר על מערכת יחסים, מונחה שאילתא ש& rsquo; s מסוגלת לחשוף את כל SQL & rsquo; s פונקציונליות, כולל מתאם, מצטרף וsubqueries, שכבת אינטראקציה DBAPI, מערכת בניית SQL ליבה, הפשטת מסד נתונים שלמה, עצמאית שכבה, תמיכה במטה-נתונים להרחבה סכימת SQL, שפת ביטוי, איגום חיבור, סוגים מותאמים אישית וcoercion.Supports סוג מגוון רחב של databasesThe תכנית כולל ניבים למגוון רחב של שרתי מסד נתונים והמנועים, כוללים MySQL, PostgreSQL, Firebird, Oracle, Microsoft SQL Server, SQLite, Sybase, ועוד רבים אחרים.
הפרויקט הוא עצמאי של מערכת הפעלה, מה שאומר שזה יכול להיות לפריסה בקלות ולהשתמש בכל הפצת גנו / לינוקס, כמו גם על Windows של מיקרוסופט, BSD או מערכות הפעלה Mac OS X. שני ארכיטקטורות חומרת 32 סיביות ו -64 סיביות נתמכות בשלב זה
מה חדש במהדורה זו:.
- ORM:
שיטה
מה חדש בגרסה 0.5.0:
- תכונות חדשות
- כללי
- תיעוד הוסב לספינקס. בפרט, תיעוד API שנוצר כבר בנוי לתוך quot פוצץ ומלא; API Reference & quot; סעיף אשר מארגן עריכה תיעוד בשילוב עם docstrings שנוצר. קישור צולב בין סעיפים ומסמכי API משתפר בהרבה, תכונת חיפוש המופעל javascript מסופקת, ומדד מלא של כל השיעורים, הפונקציות והחברים מסופק.
- setup.py עכשיו מייבא setuptools רק אופציונלי. אם לא יהיה נוכח, משמש distutils. חדש & quot; פיפס & quot; מתקין מומלץ על easy_install כפי שמתקין בצורה פשוטה יותר.
- הוסיף איור מאוד בסיסי של אינטגרציה PostGIS לתיקיית דוגמאות.
- ORM
- Query.with_polymorphic () כעת מקבל טענה שלישית & quot; מאבחן & quot; אשר יחליף את הערך של mapper.polymorphic_on לשאילתא ש. ממפים עצמם כבר לא דורשים polymorphic_on כדי להיות מוגדרים, גם אם יש הממפה polymorphic_identity. כאשר לא נקבע, הממפה תהיה לטעון שאינו polymorphically כברירת מחדל. יחד, שתי תכונות אלה יאפשרו התקנת ירושת בטון שאינה צורות להשתמש טעינת צורות על בסיס לכל שאילתא, מאז setups הבטון נוטה לנושאים רבים בעת שימוש polymorphically בכל המקרים.
- dynamic_loader מקבל query_class = כדי להתאים אישית את שיעורי שאילתה המשמשים לשניהם אוסף הדינמי והשאילתות שנבנו ממנה.
- query.order_by () מקבל אף אחד שיסיר את כל מדינת order_by תלויה ועומדת מהשאילתה, כמו גם לבטל את כל ממפה / ביחס להזמנה שהוגדרה. זה בעיקר שימושי לדריסת ההזמנה צוינה על dynamic_loader (). [כרטיס: 1079]
- SQL
- RowProxy ניתן להשתמש במקום של טיעוני מילון נשלחו לconnection.execute () וחברים. [כרטיס: 935]
- ניב
- הוספת תכונת description_encoding חדשה בניב המשמשת לקידוד שם העמודה בעת העיבוד מטה. זה בדרך כלל ברירת מחדל הוא utf-8.
- MSSQL
- נוסף בסוג MSGenericBinary חדש. זה ממפה לסוג ינארי כך שהוא יכול ליישם את ההתנהגות המקצועית של טיפול בסוגי אורך שצוין כסוגי רוחב קבועים בינארי וסוגים שאינם באורך כסוג ינארי באורך משתנה מאוגד.
- נוסף בסוגים חדשים: MSVarBinary וMSImage. [כרטיס: 1,249]
- נוסף בMSReal, MSNText, MSSmallDateTime, MSTime, MSDateTimeOffset, וסוגי MSDateTime2
- SQLite
- השתקפות טבלה עכשיו מאחסנת את ערך DefaultClause בפועל עבור העמודה. [כרטיס: 1,266]
- תיקוני באגים, שינויים התנהגותיים
- כללי
- ORM
- מקרים יוצאים מן הכלל שהועלה בcompile_mappers () כעת נשמרים כדי לספק & quot; התנהגות דביקה & quot;
- אם שיחת hasattr () על תכונה ממופות נערך מראש מפעילה כישלון לקמפל ומדכאת את היוצא מן הכלל, אוסף שלאחר מכן נחסם ולמעט יהיה חזר על ההידור הבא (שיחה). בעיה זו מתרחשת לעתים קרובות בעת שימוש הצהרתי.
- property.of_type () מוכר כיום במטרה אחת-שולחן בירושה, כאשר משתמשים בו בהקשר של prop.of_type (..). כל () / יש (), כמו גם query.join (אבזר. of_type (...)).
- query.join () מעלה שגיאה כאשר היעד של להצטרף אינו תואם את התכונה מבוססת רכוש
- בזמן שזה לא סביר שמישהו עושה את זה, מחבר SQLAlchemy היה אשם בבפרט loosey-מקרטעת התנהגות זו.
- תוקן הבאג בעת שימוש weak_instance_map = False בו אירועים שונה לא יורט לסומק (). [כרטיס: 1,272]
- תוקן כמה עמוק & quot; טור התכתבות & quot; נושאים אשר עשוי להשפיע שאילתה שהוגשה נגד בחירה המכילה מספר גרסאות של אותו השולחן, כמו גם איגודים ודומים שהכילו את אותו עמודות טבלה בעמדות עמודה שונות ברמות שונות. [כרטיס: 1,268]
- כיתות להשוואה מותאמות אישית הפועלות בשיתוף עם column_property (), ביחס () וכו 'יכול להגדיר שיטות חדשות השוואה על Comparator, אשר תהיה זמין דרך __getattr __ () על InstrumentedAttribute. במקרה של מילה נרדפת () או comparable_property (), תכונות נפתרות ראשון במתאר מוגדר על ידי המשתמש, ולאחר מכן על המשווה הוגדר על ידי המשתמש.
- accessor נוסף ScopedSession.is_active. [כרטיס: 976]
- האם להעביר את התכונות ממופות וחפצי טור כמפתחות לquery.update ({}). [כרטיס: 1,262]
- תכונות ממופות עברו לערכים () של הוספת רמת ביטוי () או העדכון () להשתמש במקשים של העמודות ממופות, לא של התכונה הממופה.
- בעיה תוקנה עם Query.delete () וQuery.update () אינו פועל כראוי עם פרמטרים bind. [כרטיס: 1242]
- Query.select_from (), from_statement () להבטיח כי הטיעון שניתן הוא FromClause, או טקסט / בחר / איחוד, בהתאמה.
- שאילתה () יכולה להיות מועברת & quot; מרוכבים & quot; מייחס כביטוי טור וזה יורחב. במידה מסוימת הקשורים ל[ כרטיס: 1,253].
- השאילתה () היא קצת חזקה יותר כאשר עברו ביטויי טור שונים, כגון מחרוזות, clauselists, טקסט () מבנים (מה שאולי אומר את זה רק מעלה את שגיאה יותר יפה).
- ראשון () פועל כצפוי עם Query.from_statement ().
- . תוקן הבאג הציג ב0.5rc4 מעורב טעינה נלהבת לא מתפקדת עבור נכסים שנוספו להודעה הידור ממפה באמצעות add_property () או שווה ערך
- תוקן הבאג שבו רב-לרבים ביחס () עם viewonly = True לא כהלכה הפניה הקישור בין secondary- & gt;. מרחוק
- פריטים כפולים באוסף מבוסס רשימה יישמרו בעת ההנפקה מוסיף ל& quot; משניים & quot; שולחן ברבים-לרבים ביחס. בהנחת שולחן M2M יש אילוץ מפתח ייחודי או עיקרי עליו, זה יעלה את הפרת המגבלה הצפויה במקום בשקט יורד ערכים הכפולים. שים לב שההתנהגות הישנה נשארה לביחס של אחד לרבים מאז ערכי אוסף במקרה שאינם נובעים בדוחות INSERT וSQLA לא ידני אוספי משטרה. [כרטיס: 1,232]
- Query.add_column () יכול לקבל חפצי FromClause באותו אופן כמו session.query () יכול.
- השוואה רב-לאחד ביחס לNULL הוא להמיר כראוי לאינה NULL מבוסס על לא _ ().
- בדיקות נוספות שנוספו אל להבטיח primaryjoin / secondaryjoin מפורש מקרים ClauseElement, כדי למנוע טעויות מבלבלות יותר בהמשך. [כרטיס: 1087]
- ממפה משופרת () לבדוק כיתות שאינן בכיתה. [כרטיס: 1,236]
- טיעון comparator_factory עכשיו מתועד ונתמך על ידי כל סוגי MapperProperty, כולל column_property (), ביחס (), backref (), ומילה נרדפת () [כרטיס: 5051].
- שינה את שמו של PropertyLoader לRelationProperty, להיות עקבי עם כל שמות האחרים. PropertyLoader עדיין קיים כמילה נרדפת.
- קבוע & quot; ITER הכפול () & quot; שיחה גורמת שגיאות אוטובוס בAPI בר, הוסר result.close התועה () שנשאר מהגרסה 0.4. [כרטיס: 1099] [כרטיס: 1,228]
- מפלי Session.merge עשו לא יפעילו autoflush. מקרי תיקונים התמזגו מקבלים הוכנס בטרם עת עם ערכים חסרים.
- שני תיקונים כדי לסייע במניעת עמודות מחוץ ללהקה מלהיות שניתנו בתרחישי ירושת polymorphic_union (אשר לאחר מכן גורם לשולחנות נוספים להיות שניתנו במוצרים קרטזית מסעיף גרימה):
- שיפורים ל & quot; טור adaption & quot; לa- & gt; b- & gt;. מצבי ירושת ג לאתר טובים יותר עמודות הקשורים זה לזה באמצעות מספר רמות של בעקיפין, ולא טיוח העמודה מותאם שאינו
- & quot; מאבחן & quot צורות; הטור מוצג רק לממפה בפועל מתבצע שאילתא נגד. הטור לא יהיה & quot; משך ב& quot; מתת או ממפת superclass כי זה לא נחוץ.
- טיעון shard_id קבוע על ShardedSession.execute (). [כרטיס: 1,072]
- SQL
- שוב יכולות להכיל סימני אחוזים בתוך השמות שלהם. [כרטיס: 1256]
- sqlalchemy.sql.expression.Function הוא כעת מעמד ציבורי. זה יכול להיות subclassed לספק פונקציות SQL המוגדרים על ידי משתמש בסגנון ציווי, כולל עם התנהגויות שנקבעו מראש. דוגמא postgis.py ממחישה את השימוש באחד מזה.
- PickleType עכשיו מעדיף השוואת == כברירת מחדל, אם האובייקט הנכנס (כגון dict) מיישם __ __eq (). אם האובייקט אינו מיישם __ __eq () ו, אזהרה בזויה משתנה = True מורמת.
- קבוע מוזרות היבוא בsqlalchemy.sql לא לייצא __names__. [כרטיס: 1,215]
- שימוש באותו החפץ ForeignKey שוב ושוב מעלה שגיאה במקום בשקט שלא הצליח מאוחר יותר. [כרטיס: 1238]
- שיטה נוסף NotImplementedError לparams () על הוספה / עדכון / מחיקת מבנים. פריטים אלה כרגע לא תומכים בפונקציונליות זו, שגם תהיה קצת מטעה בהשוואה לערכים ().
- מפתחות זרים בראי יאתרו כראוי עמודת ההפניה שלהם, גם אם הטור ניתנה & quot; מפתח & quot; לייחס שונה מהשם בא לידי ביטוי. זאת, באמצעות דגל חדש בForeignKey / ForeignKeyConstraint נקראת & quot; link_to_name & quot ;, אם נכון פירוש השם שניתן הוא לא המפתח התייחס לשמו של הטור, שהוקצה לו. [כרטיס: 650]
- בחר () יכול לקבל ClauseList כעמודה באותה הצורה כמו שולחן או לבחירה אחרת והביטויים הפנימיים ישמש כאלמנטים עמודה. [כרטיס: 1,253]
- & quot; פסיבי & quot; דגל על session.is_modified () מופץ בצורה נכונה למנהל התכונה.
- איחוד () וunion_all () לא לחסל כל order_by () שהוחל על select () יש בפנים. אם איחוד () בחר () עם order_by () (ככל הנראה כדי לתמוך LIMIT / OFFSET), אתה צריך גם לקרוא self_group () על זה כדי להחיל סוגריים.
- מנוע / בריכה
- בדיקות Connection.invalidate () למצבו סגור, כדי למנוע טעויות תכונה. [כרטיס: 1,246]
- NullPool תומך להתחבר מחדש על כישלון התנהגות. [כרטיס: 1094]
- נוסף mutex ליצירת הבריכה הראשונית בעת שימוש pool.manage (dbapi). זה מונע מקרה קל של & quot; Dogpile & quot; התנהגות אשר אחרת היה להתרחש על הפעלת עומס כבדה. [כרטיס: 799]
- _execute_clauseelement () חוזר להיות שיטה פרטית. חיבור Subclassing אין צורך עכשיו שConnectionProxy נגיש.
- תיעוד
- כרטיסים [כרטיס: 1200] [כרטיס: 1,149].
- הערה נוסף על create_session () ברירת מחדל.
- סעיף נוסף על metadata.reflect ().
- . סעיף עדכון `TypeDecorator`
- שיכתבתי & quot; threadlocal & quot; אסטרטגית סעיף של המסמכים בשל הבלבול האחרון על תכונה זו.
- הוסר קשה מיושן 'polymorphic_fetch' ומסמכים 'select_table' מירושה, עיבד במחצית השנייה של & quot; הצטרף שולחן ירושה & quot;.
- מתועד `comparator_factory` kwarg, הוסיף סעיף חדש doc & quot; מותאם אישית משווים & quot;.
- MSSQL
- refactored סוגי התאריך / השעה. `` סוג הנתונים smalldatetime`` כבר לא חותך למועד בלבד, ועכשיו יהיה ממופה סוג MSSmallDateTime. [כרטיס: 1254]
- תוקן בעיה עם תורה מספרים לקבל int.
- ממופה `` char_length`` לLEN (פונקצית ``) ``.
- אם `` INSERT`` כולל subselect INSERT`` `` מומר מ` `INSERT INTO VALUES`` לבנות ל`` INSERT INTO מבנה SELECT``.
- אם העמודה היא חלק מ` `primary_key`` זה יהיה` `לא NULL`` מאז MSSQL אינו מאפשר` `NULL`` בטורי primary_key.
- `` MSBinary`` עכשיו חוזר BINARY`` `` במקום IMAGE`` ``. זהו שינוי לאחור עולה בקנה אחד שב` `BINARY`` הוא סוג נתונים באורך קבוע ואילו` `IMAGE`` הוא סוג נתונים באורך משתנה. [כרטיס: 1,249]
- `` get_default_schema_name`` כעת משתקף מבסיס הנתונים המבוססים על סכמת ברירת המחדל של המשתמש. זה עובד עם MSSQL 2005 ורק מאוחר יותר. [כרטיס: 1258]
- תמיכת איסוף נוסף באמצעות השימוש בטיעון איסוף חדש. זו נתמכת על הסוגים הבאים: char, nchar, varchar, nvarchar, טקסט, ntext. [כרטיס: 1248]
- שינויים בפרמטרים מחרוזת חיבור להעדיף DSN כברירת מחדל עבור מפרט pyodbc. ראה docstring mssql.py לקבל הוראות שימוש מפורטות.
- הוספת תמיכה ניסיונית של savepoints. בשלב זה לא עובד באופן מלא עם הפעלות.
- תמיכה עבור שלוש רמות של nullability טור: NULL, NULL לא, וברירת המחדל המוגדר של מסד הנתונים. תצורת ברירת מחדל הטור (True מאפשרת ערכים null =) עכשיו תפיק NULL בDDL. בעבר לא היה נפלט מפרט ואת ברירת מחדל מסד הנתונים ייכנס לתוקף (בדרך כלל NULL, אך לא תמיד). באופן מפורש כדי לבקש מברירת מחדל מסד הנתונים, להגדיר את עמודות במאפשרות ערכי null = אין ולא מפרט יהיה נפלט בDDL. זה עולה בקנה אחד אחורה התנהגות. [כרטיס: 1243]
- postgres
- & quot;% & quot; סימנים בטקסט () מבנים באופן אוטומטי נמלטו אל & quot; %% & quot ;. בגלל האופי לאחור עולה בקנה אחד של שינוי זה, אזהרה נפלט אם '%%' מזוהה במחרוזת. [כרטיס: 1,267]
- שיחות alias.execute () בשיתוף עם server_side_cursors לא תעלה AttributeError.
- תמיכת השתקפות נוסף מדד לPostgres, באמצעות תיקון הגדול ארוך מוזנח, שהוגש על ידי קן Kuhlman. [כרטיס: 714]
- אורים ותומים
- מותאם הפורמט של create_xid () כדי לתקן את שני שלבים להתחייב. עכשיו יש לנו דיווחי תחום אורקל שני שלבים תוך התחייבות שפועלים כראוי עם שינוי זה.
- סוג OracleNVarchar נוסף, מייצר NVARCHAR2, וגם subclasses Unicode כך convert_unicode ש= True כברירת מחדל. NVARCHAR2 משקף לסוג זה באופן אוטומטי כך עמודות אלה לעבור יוניקוד על שולחן לידי ביטוי ללא convert_unicode מפורש = דגלים נכון. [כרטיס: 1,233]
- קבוע באג שמונע את params של סוגים מסוימים מלהיות קיבל; תודה טון לhuddlej בwwu.edu! [כרטיס: 1,265]
- mysql
- & quot;% & quot; סימנים בטקסט () מבנים באופן אוטומטי נמלטו אל & quot; %% & quot ;. בגלל האופי לאחור עולה בקנה אחד של שינוי זה, אזהרה נפלט אם '%%' מזוהה במחרוזת.
- תוקן הבאג בהעלאה חריגה כאשר עמודות FK לא להציג בהשתקפות. [כרטיס: 1,241]
- תוקן הבאג מעורב השתקפות של שולחן מרחוק סכימה עם נ"צ מפתח זרה לשולחן אחר בסכימה ש.
- associationproxy
- מאפייני proxy העמותה הם להפוך את עצמם זמינים ברמת הכיתה, לדוגמא MyClass.aproxy. בעבר זה הוערך לאף אחד.
- הצהרתי
- הרשימה המלאה של טיעונים התקבלה כמחרוזת על ידי backref () כוללת 'primaryjoin', 'secondaryjoin',, 'foreign_keys' 'המשני', 'remote_side', 'order_by'.
אובייקטים
עמודות
דרישות :
- Python
תגובות לא נמצא