के बाद से name
अद्वितीय हैं, मैं वास्तव में अपने (ओ पी के) fetchone
या fetchall
का उपयोग कर के अपने प्रारंभिक सुझाव से अधिक SELECT count(*)
का उपयोग करने का एलेक्स मार्टेली की विधि का उपयोग करने की विधि के पक्ष में।
fetchall
किसी सूची में परिणाम (आमतौर पर डेटा की एकाधिक पंक्तियां) को लपेटता है। चूंकि name
एस अनूठे हैं, fetchall
सूची में केवल एक टुपल (उदाहरण के लिए [(rowid,),]
या एक खाली सूची []
) के साथ एक सूची लौटाती है। यदि आप rowid
जानना चाहते हैं, तो fetchall
का उपयोग करके आपको सूची के माध्यम से जाने और टुपल की आवश्यकता होती है rowid
।
का प्रयोग के बाद से आप सिर्फ एक पंक्ति, (rowid,)
या None
मिल fetchone
इस मामले में बेहतर है करने के लिए। rowid
पर प्राप्त करने के लिए (बशर्ते वहाँ एक है) तुम सिर्फ टपल के पहले तत्व को उठाने के लिए है
यदि आपको विशेषपर कोई परवाह नहीं हैऔर आप सिर्फ यह जानना चाहते हैं कि हिट, है तो आप एलेक्स मार्टेलि के सुझाव, SELECT count(*)
का उपयोग कर सकते हैं, जो (1,)
या (0,)
पर वापस आ जाएगा। सेटअप करने के लिए
पहले कुछ बॉयलर-प्लेट कोड एक खिलौना SQLite तालिका:
import sqlite3
connection = sqlite3.connect(':memory:')
cursor=connection.cursor()
cursor.execute('create table components (rowid int,name varchar(50))')
cursor.execute('insert into components values(?,?)', (1,'foo',))
fetchall
का उपयोग करना:
for name in ('bar','foo'):
cursor.execute("SELECT rowid FROM components WHERE name = ?", (name,))
data=cursor.fetchall()
if len(data)==0:
print('There is no component named %s'%name)
else:
print('Component %s found with rowids %s'%(name,','.join(map(str, next(zip(*data))))))
पैदावार:
यहाँ कुछ उदाहरण कोड है
There is no component named bar
Component foo found with rowids 1
का उपयोग fetchone
:
for name in ('bar','foo'):
cursor.execute("SELECT rowid FROM components WHERE name = ?", (name,))
data=cursor.fetchone()
if data is None:
print('There is no component named %s'%name)
else:
print('Component %s found with rowid %s'%(name,data[0]))
पैदावार:
There is no component named bar
Component foo found with rowid 1
SELECT count(*)
का उपयोग करना:
for name in ('bar','foo'):
cursor.execute("SELECT count(*) FROM components WHERE name = ?", (name,))
data=cursor.fetchone()[0]
if data==0:
print('There is no component named %s'%name)
else:
print('Component %s found in %s row(s)'%(name,data))
पैदावार:
There is no component named bar
Component foo found in 1 row(s)
आप अगर यह शून्य या यदि स्तंभ बिल्कुल स्कीमा में मौजूद है की जाँच करना चाहते हैं ?? – AndiDog
नहीं, कॉलम नाम अद्वितीय है, इसलिए मैं उस नाम के साथ घटकों का चयन करना चाहता हूं, अगर यह मौजूद है या नहीं। क्षमा करें मुझे कुछ विवरण याद आया –
यदि आपको समाधान मिल गया है, तो आपको इस प्रश्न को उत्तर के रूप में चिह्नित करने के लिए एक उत्तर का चयन करना चाहिए। अधिमानतः किसी और का जवाब जिसने आपको सही तरीके से इंगित किया। –