سؤال

بايثون 2.7 (ويندوز)

    for root, dirs, files in os.walk(self.DiskLocation, topdown=False):
        for name in files:
            path = os.path.join(root, name)
            print path #check it's what we think it is
            self.cur.execute("SELECT * from myTable WHERE Path = ?", (path))

ينفع هذا...

خطأ في البرمجة:عدد غير صحيح من الارتباطات المقدمة.يستخدم البيان الحالي 1، وهناك 54 المتوفرة.

لقد كنت في حيرة من أمري بشأن ماهية الارتباطات الـ 54 المتوفرة، حتى أدركت أن متغير المسار الخاص بي هو 54 حرفًا.ولكن لماذا يفسرها SQLite على أنها قائمة طويلة من الأحرف بدلاً من سلسلة، وكيف يمكنني إيقافها عن القيام بذلك؟

هل كانت مفيدة؟

المحلول

الحجة الثانية ل execute هو تسلسل.

انت كتبت (path), ، لكن هذه مجرد أقواس عادية، لذا فهذا يعادل path.السلاسل هي تسلسلات من أحرفها، وبالتالي فإن بايثون تقوم بتمرير جميع الأحرف الـ 54 في التسلسل الذي قدمته.

ما تريده هو (path,), ، وهي صف مكون من عنصر واحد.

يتم إنشاء الصفوف باستخدام الفواصل، لا بين قوسين.

إذا كان هذا مربكًا، فيمكنك فقط استخدامه [path];القائمة جيدة هنا أيضًا.:)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top