मैंने पोस्टग्रेज में एक टॉय टेबल के साथ यह कोशिश की है और यह काम करता है, मुझे लगता है कि ओरेकल में समकक्ष होना चाहिए, कृपया मुझे बताएं।
In [15]:
result = session.connection().execute("insert into usertable values('m6', 'kk2', 'Chile') returning username")
for r in result:
print r
(u'm6',)
आशा है कि यह मदद करता है।
Oracle के लिए संपादित करें :ऐसा करने का एक तरीका जो मैंने पाया है वह बहुत सुंदर नहीं है। यह SQLAlchemy
. के नीचे कच्चे कनेक्शन का उपयोग करेगा कनेक्शन, कुछ इस तरह:
In [15]:
from sqlalchemy.sql import text
import cx_Oracle
cur = session.connection().connection.cursor()
out = cur.var(cx_Oracle.STRING)
par = { "u" : out }
cur.prepare("insert into usertable values('m34', 'kk2', 'Chile') returning username into :u")
cur.execute(None, par)
print(out)
print(type(out))
print(out.getvalue())
<cx_Oracle.STRING with value 'm34'>
<type 'cx_Oracle.STRING'>
m34
दुर्भाग्य से, मुझे नहीं लगता कि cx_oracle variable
. बनाने का कोई तरीका है उदाहरण के लिए, यह एपीआई में उपलब्ध नहीं है, docsदेखें। ए> ।
फिर, कर्सर बनाने से बचने का कोई तरीका नहीं है, भले ही यह तब काम करता हो जब आप SQLAlchemy
को अधिक प्रतिनिधि देते हैं :
In [28]:
from sqlalchemy.sql import text
import cx_Oracle
cur = session.connection().connection.cursor()
out = cur.var(cx_Oracle.STRING)
par = { "u" : out }
q = text("insert into usertable values('m43', 'kk2', 'Chile') returning username into :u")
result = session.connection().execute(q, par)
print(par["u"])
print(out)
type(out)
<cx_Oracle.STRING with value 'm43'>
<cx_Oracle.STRING with value 'm43'>
Out[28]:
cx_Oracle.STRING
बेशक, आपको इस दूसरे मामले में कर्सर को बंद करना चाहिए (पहले वाले में, ऑरैकल इसे बंद कर देता है)। बात यह है कि out = cx_Oracle.STRING()
जैसा इंस्टेंस बनाने का कोई तरीका नहीं है।
जैसा कि मैंने कहा, यह बहुत ही सुरुचिपूर्ण नहीं है, लेकिन मुझे नहीं लगता कि SQLAlchemy
में एक समान चर बनाने का कोई तरीका है . यह ऐसा कुछ है जो कोड आंतरिक रूप से संभालता है। मैं सिर्फ कच्चे कनेक्शन-कर्सर के लिए जाऊंगा।
आशा है कि यह मदद करता है।
EDIT2 :उपरोक्त कोड में, जोड़ा गया out.getvalue()
जैसे कि सुझाव दिया गया है। धन्यवाद!