আমি psycopg2ডেটাবেস এপিআই ব্যবহার করে পোস্টগ্রিসকিউএল 9.3 নিয়ে কিছু কাজ করছি ।
আমার ন্যূনতম বিচ্ছিন্নতা স্তরে ("অটোকোমিট" মোড) এ ডিবি এপিআই সেট আছে এবং এসকিউএল এর মাধ্যমে আমার নিজের লেনদেন পরিচালনা করছি। উদাহরণ:
cur = self.conn.cursor()
cur.execute("BEGIN;")
cur.execute("SELECT dbId, downloadPath, fileName, tags FROM {tableName} WHERE dlState=%s".format(tableName=self.tableName), (2, ))
ret = cur.fetchall()
cur.execute("COMMIT;")
মূলত, যে লেনদেন শুরু হয়েছিল cur.execute("BEGIN;")তা কেবলমাত্র সেই কার্সারের মধ্যেই সীমাবদ্ধ, বা এটি পুরো সংযোগের জন্য ( self.conn.cursor())?
আমি যে আরও জটিল জিনিসগুলি করছি তার মধ্যে একাধিক পৃথক ডাটাবেস ক্রিয়াকলাপ জড়িত যা আমি যুক্তিযুক্তভাবে ফাংশনগুলিতে বিভক্ত হয়ে যাই। যেহেতু এটি একটি ক্লাসে রয়েছে যার সদস্য হিসাবে সংযোগ রয়েছে তাই প্রতিটি ফাংশনের মধ্যে কার্সার তৈরি করা অনেক বেশি সুবিধাজনক। তবে, আমি নিশ্চিত না যে কোনও লেনদেনের মধ্যে কার্সার তৈরি করা কীভাবে কাজ করে।
মূলত, যদি লেনদেনগুলি প্রতি সংযোগ থাকে তবে আমি লেনদেনের মধ্যেই কেবলমাত্র প্রচুর কার্সার তৈরি করতে পারি। যদি তারা প্রতি-কার্সার হয় তবে তার অর্থ আমাকে প্রায় সর্বত্র কার্সারটি পাস করতে হবে। ইহা কোনটা?
ডকুমেন্টেশন এটিকে স্পর্শ করে না, যদিও আপনি কল করতে পারেন তা লেনদেন-নিয়ন্ত্রণ প্রতি সংযোগের জন্য connection.commit()আমার যথেষ্ট বিশ্বাস করে।