SQLite ve Python'da çalışıyorum. Sadece kullanıcı komutları veritabanı nesneleri olarak kullanarak bir TABLO oluşturmaya çalışıyorum. Çok güzel işlerpython ile bir sqlite tablosunu modellemek için sadece değişkenleri kullanın
new_table = raw_input('Enter a table name: ')
column = raw_input('Enter column name: ')
cur.execute(''' CREATE TABLE IF NOT EXISTS {tn} ({col})'''\
.format(tn = new_table, col = column))
ve bunu sezgisel bulmak: Bazı kapsamlı aramalar sonra bu yöntemi buldum (! Resmi belgeler bu tür ilişkin hiçbir bilgi vermemektedir sözdizimi-lütfen beni düzeltin). Sorunum INSERT INTO sözdizimi ile. Aşağıdaki kod ok işe yararken:
insdata = raw_input('Insert data for column: ')
cur.execute("INSERT INTO {tn} ({col}) VALUES (?)", (insdata,)\
.format(tn=new_table, col=column))
yanılma ile başarısız:
cur.execute("INSERT INTO {tn} ({col}) VALUES (?)", ('goodmorning')\
.format(tn=new_table, col=column))
aşağıda Bu kod, işe yaramaz 'tanımlama grubu' nesne hiçbir özellik biçimi vardır.
Soru geçerli: SQLite VALUES için insdata değer atamak doğru sözdizimi nedir? Bu biraz daha net moda yazarsanız
cur.execute("INSERT INTO {tn} ({col}) VALUES ({val})".format(tn=new_table,col=column,val='goodmorning'))
Tanrım, tuple'ı biçimlendiriyordum ... Merakla, küme parantezlerinde değişkenler kullanmak yerine başka bir yol var mı? Değilse, yukarıdaki sözdizimi/yöntem nerede belgelenir? Db tablo ve sütunlarına değişken isimleri atamak için bu formatlama yöntemini nasıl öğrenmiş olabilir? Ve elbette, bu kadar zamanında ve tutarlı bir cevap için çok teşekkür ederim! – ToucHDowN
@ToucHDowN Veri tabanlarına özgü değil, genel dize biçimlendirme sözdizimi. Dokümantasyon [burada] (https://docs.python.org/2.7/library/string.html#format-string-syntax). Güvenilir olmayan kullanıcı girdisi olan veritabanlarında herhangi bir şey yapmanın tehlikeli olabileceğine dikkat edin. – glibdud
@glibdud referans için çok teşekkür ederim. Şimdiye kadar (.strip/split, vs) bazı temel str metodlarını inceledim ama .format'a bile dokunmadım. Bu yüzden, kaşlı ayraçları olan yukarıdaki SQL deyimi bana yabancı gibi geldi. Şimdi temizle, teşekkürler. – ToucHDowN