AMcoder - javascript, python, java, html, php, sql

SQLAlchemy հարցումը ավելորդ նախազգուշացում է առաջացնում sqlite-ի և տասնորդականի մասին, ինչպե՞ս հատուկ անջատել:

Ես օգտագործում եմ SQLAlchemy-ը բուրգի միջոցով՝ մուտք գործելով պարզ sqlite տվյալների բազա:

Երբ ես կառուցում էի իմ աստիճանաբար ավելի բարդ հարցումները, ստացա այս նախազգուշացումը.

ԶԳՈՒՇԱՑՈՒՄ. sqlite+pysqlite բարբառը չի աջակցում տասնորդական օբյեկտներին, և SQLAlchemy-ը պետք է փոխարկվի լողացող կետից. կլորացման սխալներ և այլ խնդիրներ կարող են առաջանալ: Խնդրում ենք հաշվի առնել տասնորդական թվերը որպես տողեր կամ ամբողջ թվեր այս հարթակում անկորուստ պահեստավորման համար:

Իմ հարցումներից մեկը սա է անում (վերափոխում).

session.query(subquery.c.a*100.0/(subquery.c.b+subquery.c.c))

Այս դեպքում ենթհարցումը ենթհարցման անունն է, իսկ a, b և c-ն ամբողջ թվեր են:

Ես չեմ պահպանում հարցման արդյունքը կամ կատարում որևէ պարտավորություն, սա զուտ տվյալների արդյունահանում/հարցում է, հետևաբար ես զարմացա, երբ բարձրացվեց վերը նշված նախազգուշացումը: Ինչպե՞ս կարող եմ անտեսել այս նախազգուշացումը՝ առանց այն ամբողջությամբ զտելու (այն դեպքում, երբ ապագայում ես պատահաբար պահեմ տասնորդական տվյալները տվյալների բազայում):


Պատասխանները:


1

Դուք կարող եք անտեսել նախազգուշացումները warnings.filterwarnings ինչպես արված է այստեղ:

import warnings
from sqlalchemy.exc import SAWarning
warnings.filterwarnings('ignore',
 r"^Dialect sqlite\+pysqlite does \*not\* support Decimal objects natively\, "
 "and SQLAlchemy must convert from floating point - rounding errors and other "
 "issues may occur\. Please consider storing Decimal numbers as strings or "
 "integers on this platform for lossless storage\.$",
 SAWarning, r'^sqlalchemy\.sql\.type_api$')

Խմբագրել. SQLite-ի և SQLAlchemy-ի հետ տասնորդական արժեքների օգտագործման խնդիրն արդեն քննարկված է այս հարցը և այս պատասխանը առաջարկում է ստեղծել TypeDecorator, որը պահում է տասնորդական արժեքները ներսում որպես տեքստ:

Ձեր հարցման մեջ 100.0-ի բաժանման համար թվում է, որ այս արժեքը փոխարկվել է Decimal SQLAlchemy-ի կողմից: Այնուամենայնիվ, դուք կարող եք ստեղծել literal_column 100.0 արժեքով:

import sqlalchemy
val100 = sqlalchemy.sql.expression.literal_column("100.0")
session.query(subquery.c.a*val100/(subquery.c.b+subquery.c.c))

Այս լուծումն օգտագործելիս այն ինձ համար նախազգուշացում չի ցուցադրում:

P.D.: Ես օգտագործում եմ SQLAlchemy տարբերակը 1.0.11 և Python 2.7.11:

08.01.2016
  • Շնորհակալություն արագ արձագանքելու համար, բայց իմ վերջին նախադասությունն էր: Ինչպե՞ս կարող եմ անտեսել այս նախազգուշացումը առանց այն ամբողջությամբ զտելու (այն դեպքում, երբ ես պատահաբար պահեմ տասնորդական տվյալները տվյալների բազայում): 10.01.2016
  • Գրելու պահին sqlalchemy 1.2.10-ն ունի ոչ թե type_api, այլ sqltypes տեսակը, ինձ մոտ նույնպես ռեգեքսը չաշխատեց։ Ինձ համար սա աշխատեց՝ warnings.filterwarnings('ignore', r".*support Decimal objects natively", SAWarning, r'^sqlalchemy\.sql\.sqltypes$') 24.07.2018
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..