আমি একটি নতুন অ্যাপ্লিকেশন শুরু করছি এবং একটি ওআরএম ব্যবহার করে দেখছি - বিশেষত এসকিউএলএলকেমি।
বলুন আমি আমার ডাটাবেসে একটি কলাম 'foo' পেয়েছি এবং আমি এটি বৃদ্ধি করতে চাই। সোজা স্ক্লাইটে, এটি সহজ:
db = sqlite3.connect('mydata.sqlitedb')
cur = db.cursor()
cur.execute('update table stuff set foo = foo + 1')
আমি এসকিউএএলএলকেমি এসকিউএল-বিল্ডার সমতুল্য খুঁজে পেয়েছি:
engine = sqlalchemy.create_engine('sqlite:///mydata.sqlitedb')
md = sqlalchemy.MetaData(engine)
table = sqlalchemy.Table('stuff', md, autoload=True)
upd = table.update(values={table.c.foo:table.c.foo+1})
engine.execute(upd)
এটি সামান্য ধীর, তবে এটিতে খুব বেশি কিছু নেই।
এসকিউএএলএলএমি ওআরএম পদ্ধতির জন্য এখানে আমার সেরা অনুমান:
# snip definition of Stuff class made using declarative_base
# snip creation of session object
for c in session.query(Stuff):
c.foo = c.foo + 1
session.flush()
session.commit()
এটি সঠিক জিনিসটি করে, তবে এটি অন্য দুটি পদ্ধতির যতক্ষণ পঞ্চাশেরও বেশি সময় নেয়। আমার ধারণা এটি কারণ এটি সমস্ত ডেটা এটির সাথে কাজ করার আগে মেমোরিতে আনতে হবে।
এসকিউএএলএলচেমির ওআরএম ব্যবহার করে দক্ষ এসকিউএল উত্পন্ন করার কোনও উপায় আছে কি? বা অন্য কোনও অজগর ওআরএম ব্যবহার করছেন? অথবা আমি কি হাতে হাতে এসকিউএল লেখার পিছনে ফিরে যাই?