SQLAlchemy este o open source, platforma-independent și software-ul gratuit de bibliotecă scris în limba de programare Python și proiectat de la sol până la a acționa ca o bibliotecă abstracție de baze de date, ORM (Object Relational Mapper) și SQL Toolkit pentru Python.
Dacă v-rsquo; re un dezvoltator Python, SQLAlchemy vă va oferi flexibilitatea deplină și puterea de SQL, oferind o colecție completă de modele de persistență populare la nivel de întreprindere, care au fost proiectate pentru access.Features de înaltă performanță și eficiente de baze de date la un software glanceThe este extrem de ușor de utilizat, suficient de puternic pentru sarcini sofisticate și modulare. Cu SQLAlchemy va fi capabil să organizeze până la operațiunile de CRUD, permite utilizarea de expresii booleene, funcții, operatori, alias-uri de masă, clauze UNION, corelat EXISTĂ clauze, crea, inserați, șterge și interogări de actualizare, subinterogările selectabile, actualizări corelate, interior și exterior se alătură, și parametrii de legare.
În plus, acesta poate fi utilizat pentru a genera baze de date, precum și pentru a le introspecție, suport pentru obiecte și colecții de încărcare aferente, suport pentru crearea de persistența transparente de obiective pe baza unor modele, suport pentru manipularea și construirea de modele de domenii, precum și suport pentru sincronizarea toate modificările cu tranzacția curent în mod automat.
Printre alte caracteristici, putem menționa un sistem de interogare relațional orientat spre care și rsquo; s capabil de a expune toate SQL & rsquo; s funcționalitatea, inclusiv corelație, se alătură și sub-interogări, un strat interacțiune DBAPI, un sistem de construcție SQL de bază, o, abstracție complet de baze de date independent strat, suport pentru extensibil metadate SQL schemă, limbaj expresie, gruparea conexiunilor, oferte personalizate si coercion.Supports de tip o mare varietate de databasesThe program include dialecte pentru o mare varietate de servere de baze de date și a motoarelor, inclusiv MySQL, PostgreSQL, Firebird, Oracle, Microsoft SQL Server, SQLite, Sybase, și multe altele.
Proiectul este independent de un sistem de operare, ceea ce înseamnă că poate fi ușor instalate și utilizate pe orice distribuție GNU / Linux, precum și pe Microsoft Windows, BSD sau sistemele de operare Mac OS X. Ambele arhitecturi hardware pe 32 de biți și pe 64 de biți sunt suportate în acest moment
Ce este nou în această versiune:.
- ORM:
- [ORM] [bug] [motor] Fixed bug care a afectat, în general, aceleași clase de eveniment ca cel de # 3199, când vor fi utilizate numit = True parametru. Unele evenimente nu ar reuși să se înregistreze, iar alții nu vor invoca argumentele eveniment corect, în general, în cazul când un eveniment a fost & quot; împachetat & quot; pentru adaptare într-un alt mod. Quot &; numit & quot; mecanică au fost rearanjate a nu interfera cu semnarea argument așteptat de funcții înveliș intern.
- [ORM] [bug] Fixed bug care a afectat mai multe clase de evenimente, în special evenimente ORM, dar și evenimente de motoare, în cazul în care logica obișnuită de & quot; de duplicatoare & quot; un apel redundant pentru event.listen (), cu aceleași argumente ar eșua, pentru acele evenimente în care funcția ascultător este împachetate. O afirmație ar fi lovit în registry.py. Această afirmație a fost acum integrată în verificarea deduplicare, cu bonus de mijloace simple de verificare deduplicare peste bord.
- [ORM] [bug] avertisment, care ar emite atunci când un primaryjoin autoreferențial complex conținute funcții, în timp ce în același timp, remote_side a fost specificat fixe; avertizarea ar sugera stabilirea & quot; & quot parte la distanță ;. Acum emite numai dacă remote_side nu este prezent.
- ORM declarativ:
- [bug] [declarativ] [ORM] fix & quot; "beton" & quot obiect "NoneType" nu are nici o atribut; eroare atunci când se utilizează AbstractConcreteBase în legătură cu o subclasă care declară __abstract __.
- motor:
- [motor] [bug] Opțiunile de executare a trecut la un motor, fie prin intermediul create_engine.execution_options sau Engine.update_execution_options () nu sunt transmise legătură specială utilizată pentru a inițializa dialectul în & quot; conectați mai întâi & quot; eveniment; dialecte va efectua, de obicei, propriile întrebări în această fază, și nici una dintre opțiunile disponibile în prezent ar trebui să se aplice aici. În special, & quot; & quot; autocommit opțiune a fost cauza o încercare de a autocommit în acest inițială conecta, care ar eșua cu o AttributeError din cauza stării non-standard a conexiunii.
- [motor] [bug] Tastele șir care sunt utilizate pentru a determina coloanele afectate de o INSERT sau UPDATE sunt sortate în prezent atunci când contribuie la & quot; compilat cache & quot; cheie cache. Aceste chei au fost anterior nu determinist ordonat, adică aceeași declarație ar putea fi memorate în cache de mai multe ori pe chei echivalente, costa atât în termeni de memorie, precum și de performanță.
- SQL:
- [SQL] [bug] Fixed bug în cazul în care un număr echitabil de elemente SQL cadrul pachetului SQL nu ar reuși să __repr __ () cu succes, din cauza unei descriere atribut lipsă care ar invoca apoi o depășire recursivitate atunci când o AttributeError intern ar apoi re -invoke __repr __ ().
- [SQL] [bug] O ajustare la masă / index reflecție astfel încât în cazul în care un index raportează o coloană care nu se dovedește a fi prezent în tabel, o avertizare este emis și coloana este sărit. Aceasta se poate întâmpla pentru anumite situații speciale coloanelor sistem ca a fost observată cu Oracle.
- [SQL] [bug] Fixed bug în CTE unde literal_binds argument compilator nu s-ar fi întotdeauna fi reprodus corect atunci când se face referire la un alt CTE alias CTE într-o declarație.
- [SQL] [bug] Fixed 0.9.7 regresie cauzată de # 3067 în legătură cu o unitate de testare cu numele de Last astfel încât așa-numitul & quot; schema & quot; Tipuri de cum ar fi Boolean și Enum nu mai puteau fi murat.
- PostgreSQL:
- [PostgreSQL] [facilitate] [pg8000] Suportul se adaugă pentru & quot; sane mai multe rânduri Nr & quot; cu șoferul pg8000, care se aplică mai ales la atunci când se utilizează versiuni cu ORM. Caracteristica este detectat-versiunea bazat pe pg8000 1.9.14 sau mai mare în utilizare. Trage cerere curtoazie Tony Locke.
- [PostgreSQL] [bug] A reexamineze la această problemă în primul rând peticit în 0.9.5, aparent accesor .closed psycopg2 nu este la fel de sigur ca ne-am asumat, de aceea am adaugat o verificare explicit pentru mesajele exceptie & quot; SSL eroare SYSCALL : Bad fișier descriptor & quot; și & quot; SSL eroare SYSCALL: EOF detectat & quot; când detectarea unui scenariu este-deconectare. Vom continua să se consulte psycopg2 lui connection.closed ca o primă verificare.
- [PostgreSQL] [bug] bug fix în cazul în tip Postgresql JSON nu a putut să persiste sau scoate o valoare coloană SQL NULL, mai degrabă decât un JSON-codificat "NULL". Pentru a sprijini acest caz, modificările sunt după cum urmează:
- nul valoare () poate fi specificată acum, ceea ce va duce întotdeauna la o valoare NULL rezultat în situația.
- Un nou parametru se adaugă JSON.none_as_null, care, atunci când Adevărat indică faptul că valoarea Fără Python ar trebui să fie peristed ca SQL NULL, mai degrabă decât JSON-codificat "NULL".
- retrival de NULL ca Niciuna este, de asemenea, reparate pentru alte scopuri decât psycopg2, și anume pg8000 DBAPIs.
- [PostgreSQL] [bug] Sistemul ambalaj excepție pentru erori DBAPI poate găzdui acum excepții DBAPI non-standard, cum ar fi TransactionRollbackError psycopg2. Aceste excepții vor fi ridicate acum, folosind cea mai apropiată subclasa disponibil în sqlalchemy.exc, în cazul TransactionRollbackError, sqlalchemy.exc.OperationalError.
- [PostgreSQL] [bug] Fixed bug în obiect postgresql.array unde comparație cu o listă Python simplu nu ar reuși să folosească constructorului corect matrice. Trage cerere curtoazie Andrew.
- [PostgreSQL] [Bug] a adăugat o FunctionElement.alias acceptate () metoda funcțiilor, de exemplu, construcția func. Anterior, comportament de această metodă a fost nedefinit. Actuale imita comportamentul care pre-0.9.4, care este faptul că funcția este transformat într-o singură coloană clauza FROM cu numele alias dat, în cazul în care coloana în sine este numit anonim.
- mysql:
- [mysql] [bug] [mysqlconnector] Mysqlconnector ca de versiunea 2.0, probabil ca un efect secundar al python 3 îmbinare, acum nu se așteaptă semne sută (de exemplu, așa cum este folosit ca operator modul și altele) care urmează să fie dublat, chiar atunci când se utilizează & quot; pyformat & quot; format parametru legat (această schimbare nu este documentată de Mysqlconnector). Dialectul verifică acum pentru py2k și pentru mysqlconnector mai puțin de versiunea 2.0 la detectarea cazul în care operatorul modul trebuie să devină ca %% sau%.
- [mysql] [bug] [mysqlconnector] Unicode SQL este acum trecut pentru versiunea MySQLconnector 2.0 și mai sus; pentru Py2k și MySQL & lt; 2.0, siruri de caractere sunt codate.
- sqlite:
- [sqlite] [bug] Când selectați dintr-o Uniune care utilizează un fișier de bază de date atașat, numele coloanelor rapoarte de conducător auto pysqlite în cursor.description drept "dbname.tablename.colname", în loc de "tablename.colname" așa cum se întâmplă în mod normal pentru o UNIUNE (rețineți că ar trebui sa fie doar "colName" pentru ambele, dar lucrăm în jurul acestuia). Logica Traducere coloană de aici a fost ajustată pentru a prelua token din dreapta, mai degrabă decât a doua ordine de idei, așa că funcționează în ambele cazuri. Soluție curtoazie Tony Roberts.
- MSSQL:
- [MSSQL] [bug] Fixed detectarea șir versiunea în dialectul pymssql de a lucra cu Microsoft SQL Azure, care se schimbă cuvântul & quot; SQL Server & quot; a & quot; SQL Azure & quot;.
- Oracle:
- [oracle] [bug] fix de lungă durată bug în Oracle dialect în care numele parametrilor legați, care a început cu numere nu va fi citat, ca Oracle nu-i place Numerele de nume ale parametrilor legate.
- Diverse:
- [bug] [declarativ] Fix o condiție cursă improbabil observată în unele setări exotice utilizatorilor finali, în cazul în care încercarea de a verifica pentru & quot; dublează nume de clasă & quot; în declarativ ar fi lovit pe un referință slab nu-total curățat-up-legate de un alt clasă fiind eliminate; Verificați aici asigură acum weakref referire încă un obiect înainte de a apela la o mai departe.
- [bug] [ext] bug fix în listă în care ordinea de articole ar fi aruncat de pe timpul o colecție înlocui eveniment, în cazul în care pavilion reorder_on_append au fost stabilite la Adevărat comanda. Fix asigură că lista de comanda numai efecte lista care este asociat în mod explicit cu obiectul.
- [bug] [ext] Fixed bug în cazul în care nu a reușit să pună în aplicare ext.mutable.MutableDict actualizare () metoda dicționar, prin urmare, nu capturare modificări. Trage cerere curtoazie Matei Chisholm.
- [bug] [ext] Fixed bug în cazul în care o subclasă personalizat de ext.mutable.MutableDict nu ar apărea într-o & quot; obliga & quot; funcționarea și se va întoarce în schimb o ext.mutable.MutableDict simplu. Trage cerere curtoazie Matei Chisholm.
- [bug] [piscină] bug fix în piscină legătură de exploatare în cazul în care quot &, conectare verificat & quot; Mesajul depanare de logare nu ar emite în cazul în care logare au fost înființate cu ajutorul logging.setLevel (), mai degrabă decât folosind pavilion echo_pool. Au fost adăugate teste la afirma acest logare. Aceasta este o regresie care a fost introdus în 0.9.0.
Ce este nou în versiunea 0.5.0:
- caracteristici noi
- General
- Documentația a fost convertit la Sfinx. În special, documentația API generat a fost construit într-un complet quot cu sufletul la gură și, API Reference & quot; secțiune care organizează documentare editorial combinat cu docstrings generate. De legătură între Crucea secțiuni și docs API sunt mult îmbunătățite, o caracteristică de căutare pe bază de javascript este asigurat, iar un indice plin de toate categoriile, funcțiile și membri este asigurată.
- setup.py importa acum setuptools doar opțional. În cazul în care nu este prezent, este folosit distutils. Noul & quot; & quot; pip instalare este recomandat pe easy_install cum se instalează într-un mod mai simplificat.
- adăugat o ilustrare extrem de bază de o integrare PostGIS la folderul exemple.
- ORM
- Query.with_polymorphic () acceptă acum un al treilea argument & quot; discriminator & quot; care va înlocui valoarea mapper.polymorphic_on pentru interogare. Cartografi se nu mai necesită polymorphic_on să fie stabilite, chiar dacă mapperul are o polymorphic_identity. Când nu sunt setate, mapperul va încărca de bază non-polimorfic implicit. Împreună, aceste două caracteristici permit o configurare moștenire beton de bază non-polimorfă a utiliza încărcare polimorfă pe o bază per-interogare, deoarece setari beton sunt predispuse la multe probleme atunci când sunt utilizate polimorfic în toate cazurile.
- dynamic_loader acceptă o query_class = a personaliza clasele Solicitare utilizate atât pentru dinamica colectarea și interogări construite din ea.
- query.order_by () acceptă Fără specialitate, care va elimina orice stat order_by în așteptarea de interogare, precum și anula orice mapper / relație comanda configurate. Acest lucru este în primul rând util pentru imperative ordonarea specificat pe un dynamic_loader (). [Bilet de avion: 1079]
- SQL
- RowProxy poate fi folosit în loc de argumente dicționarul trimise la connection.execute () si prieteni. [Bilet de avion: 935]
- dialect
- Adaugata o nouă atribut description_encoding pe dialectul care este folosit pentru codificarea numele de coloană la procesarea metadatele. Acest obicei implicit la UTF-8.
- MSSQL
- Adaugata într-un nou tip de MSGenericBinary. Aceasta harti de tipul Binary astfel încât să poată pune în aplicare comportamentul de specialitate de tratare lungime specificată tipuri ca tipurile binare cu lățime fixă și tipuri de bază non-lungime ca o lungime variabilă de tip binar Neconsolidat.
- Adaugata la noile tipuri: MSVarBinary și MSImage. [Bilet de avion: 1249]
- Adăugate în MSReal, MSNText, MSSmallDateTime, MSTime, MSDateTimeOffset, iar tipurile MSDateTime2
- sqlite
- Table reflecție stochează acum valoarea reală DefaultClause pentru coloana. [Bilet de avion: 1266]
- rezolvări ale unor probleme, modificări de comportament
- General
- ORM
- Excepții ridicate în timpul compile_mappers () sunt acum conservate pentru a oferi & quot; comportament lipicios & quot;
- daca un hasattr () apel pe un atribut de pre-compilate mapat declanșează un eșec compila și suprima excepția, compilare ulterior este blocat și excepția va fi reiterat la următoarea compilare () apel. Această problemă apare frecvent atunci când se utilizează declarativ.
- property.of_type () este acum recunoscută pe o țintă singură masă moștenesc, atunci când este utilizat în contextul prop.of_type (..). Orice () / are (), precum și query.join (prop. of_type (...)).
- query.join () ridică o eroare atunci când ținta alătura nu se potrivește atributul pe baza de proprietate
- în timp ce este puțin probabil cineva este de a face acest lucru, autorul SQLAlchemy a fost vinovat de acest comportament particular Loosey-stupid.
- Fixed bug atunci când se utilizează weak_instance_map = unde Fals evenimente modificate nu va fi primita de culoare (). [Bilet de avion: 1272]
- Fix unele adânc & quot; coloană corespondență & quot; probleme care ar putea afecta o interogare făcut împotriva unui selecție care conține mai multe versiuni ale aceluiași tabel, precum și sindicatele și similare care conțineau aceleași coloane de masă în diferite poziții de coloane la diferite niveluri. [Bilet de avion: 1268]
- clasele comparator personalizate utilizate împreună cu column_property (), relația (), etc pot defini noi metode de comparare pe comparatorului, care va deveni disponibil prin intermediul __getattr __ () de pe InstrumentedAttribute. În cazul sinonim () sau comparable_property (), atribute sunt rezolvate în primul rând pe descriptorul definite de utilizator, apoi pe comparatorul definite de utilizator.
- Adaugat ScopedSession.is_active accessor. [Bilet de avion: 976]
- Pot trece atributele mapate și obiecte de coloane ca taste pentru a query.update ({}). [Bilet de avion: 1262]
- atributele mapate trecut la valorile () ale unui insert nivel de expresie () sau update () va folosi cheile coloanelor mapate, nu că a atributului mapate.
- problemă corectată cu Query.delete () și Query.update () nu funcționează corect cu parametrii de legare. [Bilet de avion: 1242]
- Query.select_from (), from_statement () se asigură că argumentul dat este un FromClause, sau Text / Selectare / Union, respectiv.
- Query () poate fi trecut un & quot; compozit & quot; atribut ca o expresie coloană și se va extinde. Oarecum legate de [bilet de avion: 1253].
- Query () este un pic mai robust când a trecut diverse expresii coloane, cum ar fi siruri de caractere, clauselists, text () constructe (ceea ce poate însemna o ridică doar o eroare mai frumos).
- primul () funcționează conform așteptărilor cu Query.from_statement ().
- Fixed bug introdus în 0.5rc4 care implică încărcare dornici nu funcționează pentru proprietățile care au fost adăugate la un mapper post-compilare folosind add_property () sau echivalent.
- Fixed bug în cazul în care mai-multe-la-multe relația () cu viewonly = True nu ar referi în mod corect legătura dintre secondary- & gt;. La distanță
- articole duplicat într-o colecție pe bază de listă va fi menținută în cazul emiterii insertii la o & quot; secundare & quot; masă într-o relație cu multe la-mulți. Presupunând că masa M2M are o constrângere cheie unică sau primară pe el, aceasta va ridica încălcarea de așteptat constrângere în loc de cădere în tăcere intrările duplicat. Rețineți că vechiul comportament rămâne o relație unu-la-mulți deoarece intrările de colectare în acest caz nu duc la declarații INSERT și SQLA nu îi manual colecții de poliție. [Bilet de avion: 1232]
- Query.add_column () poate accepta obiecte FromClause în același mod ca și session.query () poate.
- Compararea a-la-unu mulți legătură cu NULL este convertit în mod corespunzător nu este nulă bazat pe nu _ ().
- verificări suplimentare adăugate pentru a se asigura explicit primaryjoin / secondaryjoin sunt cazuri ClauseElement, pentru a preveni erorile mai confuze mai târziu. [Bilet de avion: 1087]
- mapper îmbunătățită () verifică pentru clasele non-clasă. [Bilet de avion: 1236]
- argument comparator_factory este acum documentat și sprijinită de toate tipurile MapperProperty, inclusiv column_property (), relația (), backref (), și sinonim () [bilet: 5051].
- a schimbat numele PropertyLoader la RelationProperty, să fie în concordanță cu toate celelalte nume. PropertyLoader este încă prezent ca un sinonim.
- fix & quot; dublu ITER () & quot; apel provocând erori de autobuz în ciob API, îndepărtat result.close rătăcitor () rămase de la versiunea 0.4. [Bilet de avion: 1099] [bilet: 1228]
- realizate cascade Session.merge nu declanșa autoflush. Corecții fuzionat cazuri sansa introduce prematur cu valori lipsă.
- Două remedieri a ajuta la prevenirea out-of-band coloane de a fi pronunțată în scenarii polymorphic_union succesorale (care apoi determină tabele suplimentare care urmează să fie prestate în clauza FROM provoacă produse carteziene):
- îmbunătățiri la & quot; coloană Adaptare & quot; pentru a- & gt; b- & gt;. c situații de succesiune pentru a localiza mai bine coloanele care sunt legate una de alta prin mai multe niveluri de indirectare, mai degrabă decât făcând coloana non-adaptată
- & quot; discriminator polimorfă & quot; coloană este redat doar pentru mapperul real fiind interogate împotriva. Coloana nu va fi & quot; tras în & quot; de la o subclasă sau mapper superclasa, deoarece nu este necesar.
- argument shard_id fix pe ShardedSession.execute (). [Bilet de avion: 1072]
- SQL
- Coloanele pot conține din nou semne de procente în numele lor. [Bilet de avion: 1256]
- sqlalchemy.sql.expression.Function este acum o clasa publica. Acesta poate fi subclasate pentru a oferi funcțiile SQL definite de utilizator într-un stil imperativ, inclusiv cu comportamente prestabilite. Postgis.py exemplu ilustrează o utilizare a acestui.
- PickleType favorizează acum comparare == implicit, în cazul în care obiectul de intrare (cum ar fi un dict) pune în aplicare __eq __ (). Dacă obiectul nu pune în aplicare __eq __ () și mutabil = Adevărat, o avertizare dezaprobare este ridicat.
- fixă ciudatenie import în sqlalchemy.sql nu a exporta __names__. [Bilet: 1215]
- Utilizarea același obiect ForeignKey repetat ridică o eroare în loc de tăcere faptul că nu mai târziu. [Bilet de avion: 1238]
- Adăugat NotImplementedError pentru params () metoda pe Insert / Actualizare / Șterge construcții. Aceste elemente prezent, nu acceptă această funcționalitate, care, de asemenea, ar fi un pic înșelătoare față de valorile ().
- chei externe reflectate va găsi în mod corespunzător coloană lor de referință, chiar dacă coloana a fost dat un & quot; & quot; cheie atribut diferit de numele reflectat. Acest lucru se realizează prin intermediul unui nou steag pe ForeignKey / ForeignKeyConstraint denumit & quot; & quot ;, link_to_name Dacă este adevărat ce înseamnă numele dat este cheia nu-menționate nume de coloană, a lui alocate. [Bilet de avion: 650]
- select () poate accepta un ClauseList ca o coloană în același mod ca masă sau altă selectabil și expresiile interioare vor fi folosite ca elemente de coloană. [Bilet de avion: 1253]
- & quot; & quot; pasivă pavilion pe session.is_modified () este propagat în mod corect a administratorului atribut.
- sindicat () și union_all () nu va lovi nici o order_by (), care a fost aplicată select () s interior. Dacă uniune () a select () cu order_by () (probabil pentru a sprijini LIMIT / OFFSET), trebuie să apelați de asemenea self_group () pe ea să se aplice paranteză.
- motor / piscină
- Connection.invalidate () verifică starea inchis pentru a evita erorile de atribute. [Bilet de avion: 1246]
- NullPool susține reconectați asupra comportamentului eșec. [Bilet de avion: 1094]
- Adăugat un mutex pentru crearea inițială piscină la utilizarea pool.manage (dbapi). Acest lucru previne un caz minor de & quot; Dogpile & quot; comportament care ar apărea altfel pe un startup sarcină grea. [Bilet de avion: 799]
- _execute_clauseelement () se întoarce la a fi o metodă privat. Conexiunea subclasarea nu este necesară acum că ConnectionProxy este disponibil.
- documentare
- Bilete [de bilete: 1200] [de bilete: 1149].
- Adaugata notă despre create_session () implicite.
- secțiune Adaugata despre metadata.reflect ().
- Updated `pct TypeDecorator`.
- rescris & quot; & quot; threadlocal secțiune strategie a docs din cauza confuziei recent peste această caracteristică.
- Eliminat prost din data "polymorphic_fetch" și documente "select_table" din moștenire, refăcut în a doua jumătate a & quot; s-au alăturat masă moștenire & quot;.
- documentate `comparator_factory` kwarg, a adaugat sectiunea doc & quot; personalizate comparatoare & quot;.
- MSSQL
- Refactored Dată tipurile / Ora. `` Tipul de date smalldatetime`` nu mai trunchiază la numai o dată, și va fi acum mapate la tipul MSSmallDateTime. [Bilet de avion: 1254]
- Corectat o problemă cu Numerice pentru a accepta un int.
- mapate `` char_length`` la `` LEN () `` funcția.
- Dacă un `` INSERT`` include un subselect `` INSERT`` este transformat dintr-o `` INSERT INTO VALUES`` construi o `` INSERT INTO SELECT`` construcție.
- Dacă coloana este parte a unui `` primary_key`` va fi `` NU NULL`` deoarece MSSQL nu permite `` NULL`` în coloane primary_key.
- `` MSBinary`` returnează acum o `` BINARY`` în loc de un `` IMAGE``. Aceasta este o schimbare înapoi incompatibil în care `` BINARY`` este un tip de fix de date lungime întrucât `` IMAGE`` este un tip de date de lungime variabilă. [Bilet de avion: 1249]
- `` get_default_schema_name`` este acum reflectat de baza de date pe baza schema implicit al utilizatorului. Aceasta funcționează numai cu MSSQL 2005 și mai târziu. [Bilet de avion: 1258]
- sprijin colaționare Adaugata prin utilizarea unui nou argument colaționare. Acest lucru este sprijinit pe următoarele tipuri: char, NCHAR, VARCHAR, nvarchar, text, ntext. [Bilet de avion: 1248]
- Modificări ale parametrilor șir conexiune favoriza DSN ca specificația implicit pentru pyodbc. Vezi docstring mssql.py pentru instrucțiuni detaliate de utilizare.
- Adăugat suport experimental de puncte de salvare. In prezent nu funcționează pe deplin cu sesiuni.
- Suport pentru trei niveluri de nulabilitate coloană: NULL, NOT NULL, și implicit configurat în baza de date a. Implicit Coloana configurația (null = True) va genera acum NULL în DDL. Anterior nicio specificație a fost emisă și implicit a bazei de date va intra în vigoare (de obicei NULL, dar nu intotdeauna). Pentru a solicita în mod explicit implicit de baze de date, configurați coloane cu nulă = Fără specialitate și fără specificații va fi emis în DDL. Acest lucru este invers comportament incompatibil. [Bilet de avion: 1243]
- Postgres
- & quot;% & quot; semne în text () constructe scăpat în mod automat la & quot; & quot ;. %% Din cauza naturii înapoi incompatibil de această schimbare, o avertizare este emis dacă "%%" este detectat în șir. [Bilet de avion: 1267]
- Tonuri de alias.execute (), coroborat cu server_side_cursors nu va ridica AttributeError.
- Adăugat Index sprijin reflecție la Postgres, folosind un plasture mare noi mult timp neglijat, prezentat de Ken Kuhlman. [Bilet de avion: 714]
- Oracle
- Ajustat formatul de create_xid () pentru a repara comitere în două faze. Avem acum rapoarte de teren de Oracle comitere în două faze de lucru în mod corespunzător cu această schimbare.
- Adaugat tip OracleNVarchar, produce NVARCHAR2, și subclasele de asemenea Unicode astfel încât convert_unicode = True implicit. NVARCHAR2 reflectă în acest tip de automat, astfel încât aceste coloane trece unicode pe o masă reflectă fără convert_unicode explicită = steaguri adevărate. [Bilet de avion: 1233]
- Fixed bug care a fost prevenirea afară params ale anumitor tipuri de a fi primit; datorită o tona de huddlej la wwu.edu! [Bilet de avion: 1265]
- mysql
- & quot;% & quot; semne în text () constructe scăpat în mod automat la & quot; & quot ;. %% Din cauza naturii înapoi incompatibil de această schimbare, o avertizare este emis dacă "%%" este detectat în șir.
- Fixed bug în excepție raise când coloanele FK nu prezinte în timpul reflecție. [Bilet de avion: 1241]
- Fixed bug care implică reflecție a unui tabel de la distanță schemă cu o cheie Arbitrul străin într-un alt tabel în care schema.
- associationproxy
- Proprietățile proxy de asociere sunt disponibile să se facă la nivel de clasă, de exemplu MyClass.aproxy. Anterior această evaluat la Niciunul.
- declarativ
- Lista completă de argumente acceptate ca șir de backref () include "primaryjoin", "secondaryjoin",, "foreign_keys '' secundare ',' remote_side", "order_by".
Obiecte
Cerințe :
- Python
Comentariile nu a fost găsit