Read more about the article Python MongoDB (1) – Python MongoDB Nedir? – Python MongoDB Veritabanı Oluşturma  – Python MongoDB Koleksiyon Oluşturma – Python MongoDB DANIŞMANLIK
Ödevcim Online, Python, Python örnekleri, Python ödev yaptırma, Python MySQL, Python danışmanlık, Python MySQL Tablo, Python proje yaptırma, Python tez yaptırma aramalarınızın sonucu olarak burada. Tüm bölümlerde Python danışmanlık, Python yardım talepleriniz için akademikodevcim@gmail.com mail adresinden bize ulaşabilir veya sayfanın en altındaki formu doldurup size ulaşmamızı bekleyebilirsiniz. Python MongoDB Python, veritabanı uygulamalarında kullanılabilir. En popüler NoSQL veritabanlarından biri MongoDB'dir. MongoDB MongoDB, verileri JSON benzeri belgelerde depolar, bu da veritabanını çok esnek ve ölçeklenebilir hale getirir. Bu eğitimdeki kod örneklerini deneyebilmek için bir MongoDB veritabanına erişmeniz gerekecek. Ücretsiz MongoDB veritabanını https://www.mongodb.com adresinden indirebilirsiniz. Veya https://www.mongodb.com/cloud/atlas adresindeki MongoDB bulut hizmetiyle hemen başlayın. PyMongo Python, MongoDB veritabanına erişmek için bir MongoDB sürücüsüne ihtiyaç duyar. Bu eğitimde MongoDB sürücüsü "PyMongo" kullanacağız."PyMongo" yu kurmak için PIP kullanmanızı tavsiye ederiz. PIP, büyük olasılıkla Python ortamınızda zaten yüklüdür. Komut satırınızda PIP konumuna gidin ve aşağıdakileri yazın: "PyMongo" yu indirin ve yükleyin: C: Kullanıcılar Adınız AppData Local Programlar Python Python36-32 Scripts> python -m pip kurulum pymongo Şimdi bir mongoDB sürücüsü indirip yüklediniz. PyMongo'yu test edin Kurulumun başarılı olup olmadığını test etmek için veya zaten "pymongo" yüklediyseniz, aşağıdaki içeriğe sahip bir Python sayfası oluşturun: demo_mongodb_test.py: ithal pymongo Yukarıdaki kod herhangi bir hata olmadan çalıştırılırsa, "pymongo" kurulur ve kullanıma hazırdır. Python MongoDB Veritabanı Oluşturma Veritabanı Oluşturma MongoDB'de bir veritabanı oluşturmak için, bir MongoClient nesnesi oluşturarak başlayın, ardından doğru ip adresi ve oluşturmak istediğiniz veritabanının adını içeren bir bağlantı URL'si belirtin. MongoDB, mevcut değilse veritabanını oluşturacak ve onunla bağlantı kuracaktır. Misal "Veritabanım" adlı bir veritabanı oluşturun: ithal pymongo myclient = pymongo.MongoClient ("mongodb: // localhost: 27017 /") mydb = myclient ["veritabanım"] Önemli: MongoDB'de, içerik alana kadar bir veritabanı oluşturulmaz! MongoDB, veritabanını (ve koleksiyonu) gerçekten oluşturmadan önce en az bir belge (kayıt) içeren bir koleksiyon (tablo) oluşturana kadar bekler. Veritabanının var olup olmadığını kontrol edin. Unutmayın: MongoDB'de, bir veritabanı içerik alana kadar oluşturulmaz, bu nedenle ilk kez bir veritabanı oluşturuyorsanız, veritabanının mevcut olup olmadığını kontrol etmeden önce sonraki iki bölümü tamamlamanız gerekir (koleksiyon oluşturun ve belge oluşturun)! Sisteminizdeki tüm veritabanlarını listeleyerek bir veritabanı olup olmadığını kontrol edebilirsiniz: Misal Sisteminizin veritabanlarının bir listesini döndürün: yazdırmak (myclient.list_database_names ()) Veya belirli bir veritabanını ada göre kontrol edebilirsiniz: Misal "Veritabanım" var mı kontrol edin: dblist = myclient.list_database_names () dblist içinde "veritabanım" ise: print ("Veritabanı var.") Python MongoDB Koleksiyon Oluşturma MongoDB'deki bir koleksiyon, SQL veritabanlarındaki bir tabloyla aynıdır. Bir Koleksiyon Oluşturma MongoDB'de bir koleksiyon oluşturmak için veritabanı nesnesini kullanın ve oluşturmak istediğiniz koleksiyonun adını belirtin. MongoDB, yoksa koleksiyonu oluşturacaktır. Misal "Müşteriler" adlı bir koleksiyon oluşturun: ithal pymongo myclient = pymongo.MongoClient ("mongodb: // localhost: 27017 /") mydb = myclient ["veritabanım"] mycol = mydb ["müşteriler"] Önemli: MongoDB'de içerik alana kadar koleksiyon oluşturulmaz! MongoDB, koleksiyonu gerçekten oluşturmadan önce bir belge eklemenizi bekler. Koleksiyonun var olup olmadığını kontrol edin. Unutmayın: MongoDB'de, içerik alana kadar bir koleksiyon oluşturulmaz, bu nedenle ilk kez bir koleksiyon oluşturuyorsanız, koleksiyonun var olup olmadığını kontrol etmeden önce bir sonraki bölümü tamamlamalısınız (belge oluştur)! Tüm koleksiyonları listeleyerek bir veritabanında bir koleksiyon olup olmadığını kontrol edebilirsiniz: Misal Veritabanınızdaki tüm koleksiyonların bir listesini döndürün: yazdırmak (mydb.list_collection_names ()) Veya belirli bir koleksiyonu ada göre kontrol edebilirsiniz: Misal "Müşteriler" koleksiyonunun mevcut olup olmadığını kontrol edin: collist = mydb.list_collection_names () Collist'te "müşteriler": print ("Koleksiyon var.") Python MongoDB Ekleme Belgesi MongoDB'deki bir belge, SQL veritabanlarındaki bir kayıtla aynıdır. Koleksiyona Ekle MongoDB'de çağrıldığı şekliyle dokümanı bir koleksiyona eklemek için insert_one () yöntemini kullanıyoruz. İnsert_one () yönteminin ilk parametresi, eklemek istediğiniz belgedeki her alanın ad (lar) ını ve değerlerini içeren bir sözlüktür. Misal "Müşteriler" koleksiyonuna bir kayıt ekleyin: ithal pymongo myclient = pymongo.MongoClient ("mongodb: // localhost: 27017 /") mydb = myclient ["veritabanım"] mycol = mydb ["müşteriler"] mydict = {"name": "John", "adres": "Otoyol 37"} x = mycol.insert_one (mydict) _İd Alanını döndür İnsert_one () yöntemi, eklenen belgenin kimliğini tutan bir insert_id özelliğine sahip bir InsertOneResult nesnesi döndürür. Misal "Müşteriler" koleksiyonuna başka bir kayıt ekleyin ve _id alanının değerini döndürün: mydict = {"name": "Peter", "adres": "Düşük Sokak 27"} x = mycol.insert_one (mydict) yazdırmak (x.inserted_id) Bir _id alanı belirtmezseniz, MongoDB sizin için bir tane ekleyecek ve her belge için benzersiz bir kimlik atayacaktır. Yukarıdaki örnekte _id alanı belirtilmemiştir, bu nedenle MongoDB kayıt (belge) için benzersiz bir _id atamıştır. Birden Fazla Belge Ekleme MongoDB'de bir koleksiyona birden fazla belge eklemek için insert_many () yöntemini kullanıyoruz. İnsert_many () yönteminin ilk parametresi, eklemek istediğiniz verileri içeren sözlükleri içeren bir listedir: Misal ithal pymongo myclient = pymongo.MongoClient ("mongodb: // localhost: 27017 /") mydb = myclient ["veritabanım"] mycol = mydb ["müşteriler"] mylist = [ {"name": "Amy", "adres": "Apple st 652"}, {"name": "Hannah", "adres": "Dağ 21"}, {"name": "Michael", "adres": "Valley 345"}, {"name": "Sandy", "adres": "Ocean blvd 2"}, {"name": "Betty", "adres": "Yeşil Çim 1"}, {"name": "Richard", "address": "Sky st 331"}, {"name": "Susan", "adres": "Tek yön 98"}, {"ad": "Vicky", "adres": "Sarı Bahçe 2"}, {"name": "Ben", "adres": "Park Lane 38"}, {"ad": "William", "adres": "Merkez cad. 954"}, {"name": "Chuck", "adres": "989 Ana Yol"}, {"name": "Viola", "adres": "Sideway 1633"}] x = mycol.insert_many (mylist) Eklenen belgelerin _id değerlerinin #print listesi: yazdırmak (x.inserted_ids) İnsert_many () yöntemi, eklenen belgelerin kimliklerini tutan bir insert_ids özelliğine sahip bir InsertManyResult nesnesi döndürür. Belirtilen Kimliklerle Birden Çok Belge Ekleme MongoDB'nin belgenize benzersiz kimlikler atamasını istemiyorsanız, belgeleri eklerken _id alanını belirtebilirsiniz. Değerlerin benzersiz olması gerektiğini unutmayın. İki belge aynı _id'ye sahip olamaz. Misal ithal pymongo myclient = pymongo.MongoClient ("mongodb: // localhost: 27017 /") mydb = myclient ["veritabanım"] mycol = mydb ["müşteriler"] mylist = [ {"_id": 1, "name": "John", "address": "Highway 37"}, {"_id": 2, "name": "Peter", "address": "Lowstreet 27"}, {"_id": 3, "name": "Amy", "adres": "Apple st 652"}, {"_id": 4, "name": "Hannah", "address": "Dağ 21"}, {"_id": 5, "name": "Michael", "adres": "Vadi 345"}, {"_id": 6, "name": "Sandy", "address": "Ocean blvd 2"}, {"_id": 7, "name": "Betty", "address": "Green Grass 1"}, {"_id": 8, "name": "Richard", "address": "Sky st 331"}, {"_id": 9, "name": "Susan", "adres": "Tek yön 98"}, {"_id": 10, "ad": "Vicky", "adres": "Sarı Bahçe 2"}, {"_id": 11, "name": "Ben", "adres": "Park Lane 38"}, {"_id": 12, "name": "William", "address": "Central st 954"}, {"_id": 13, "name": "Chuck", "address": "Main Road 989"}, {"_id": 14, "name": "Viola", "adres": "Sideway 1633"}] x = mycol.insert_many (mylist) Eklenen belgelerin _id değerlerinin #print listesi: yazdırmak (x.inserted_ids) sonucunu alırsınız. Ödevcim Online, Python, Python örnekleri, Python ödev yaptırma, Python MySQL, Python danışmanlık, Python MySQL Tablo, Python proje yaptırma, Python tez yaptırma aramalarınızın sonucu olarak burada. Tüm bölümlerde Python danışmanlık, Python yardım talepleriniz için akademikodevcim@gmail.com mail adresinden bize ulaşabilir veya sayfanın en altındaki formu doldurup size ulaşmamızı bekleyebilirsiniz.

Python MongoDB (1) – Python MongoDB Nedir? – Python MongoDB Veritabanı Oluşturma – Python MongoDB Koleksiyon Oluşturma – Python MongoDB DANIŞMANLIK

  Ödevcim Online, Python, Python örnekleri, Python ödev yaptırma, Python MySQL, Python danışmanlık, Python MySQL Tablo, Python proje yaptırma, Python tez yaptırma aramalarınızın sonucu olarak burada. Tüm bölümlerde Python danışmanlık,…

Okumaya devam edinPython MongoDB (1) – Python MongoDB Nedir? – Python MongoDB Veritabanı Oluşturma – Python MongoDB Koleksiyon Oluşturma – Python MongoDB DANIŞMANLIK
Read more about the article Python MySQL (1) – Python MySQL Veritabanı Oluşturma – Python MySQL Tablo Oluşturma ve Tabloya Ekleme – Python MySQL Seçim Yapma – NumPy Set İşlemleri – PYTHON NUMPY DANIŞMANLIK
Ödevcim Online, Python, Python örnekleri, Python ödev yaptırma, Python MySQL, Python danışmanlık, Python MySQL Tablo, Python proje yaptırma, Python tez yaptırma aramalarınızın sonucu olarak burada. Tüm bölümlerde Python danışmanlık, Python yardım talepleriniz için akademikodevcim@gmail.com mail adresinden bize ulaşabilir veya sayfanın en altındaki formu doldurup size ulaşmamızı bekleyebilirsiniz. Python MySQL Python, veritabanı uygulamalarında kullanılabilir. En popüler veritabanlarından biri MySQL'dir. MySQL Veritabanı Bu öğreticideki kod örnekleriyle deneme yapabilmek için bilgisayarınızda MySQL kurulu olmalıdır. Ücretsiz bir MySQL veritabanını https://www.mysql.com/downloads/ adresinden indirebilirsiniz. MySQL Sürücüsünü Kurma Python, MySQL veritabanına erişmek için bir MySQL sürücüsüne ihtiyaç duyar. Bu eğitimde "MySQL Connector" sürücüsünü kullanacağız. "MySQL Bağlayıcısı" nı yüklemek için PIP kullanmanızı öneririz. PIP, büyük olasılıkla Python ortamınızda zaten yüklüdür. Komut satırınızda PIP konumuna gidin ve aşağıdakileri yazın: "MySQL Bağlayıcısı" nı indirin ve yükleyin: C: \ Kullanıcılar \ Adınız \ AppData \ Local \ Programlar \ Python \ Python36-32 \ Scripts> python -m pip mysql-connector-python yükleyin Şimdi bir MySQL sürücüsü indirip yüklediniz. MySQL Bağlayıcısını Test Edin Kurulumun başarılı olup olmadığını test etmek için veya zaten "MySQL Bağlayıcınız" kuruluysa, aşağıdaki içeriğe sahip bir Python sayfası oluşturun: demo_mysql_test.py: mysql.connector'ı içe aktar Yukarıdaki kod herhangi bir hata olmadan çalıştırıldıysa, "MySQL Bağlayıcısı" kurulur ve kullanıma hazırdır. Bağlantı Oluşturma Veritabanına bir bağlantı oluşturarak başlayın. MySQL veritabanınızdaki kullanıcı adını ve şifreyi kullanın: demo_mysql_connection.py: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", ) Şifre = "Þifrenizi" Baskı (Mydb) Artık veritabanını SQL deyimlerini kullanarak sorgulamaya başlayabilirsiniz. Python MySQL Veritabanı Oluşturma Veritabanı Oluşturma MySQL'de bir veritabanı oluşturmak için "CREATE DATABASE" ifadesini kullanın: Misal "veritabanım" adlı bir veritabanı oluşturun: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi") imlecim = mydb.cursor () mycursor.execute ("CREATE DATABASE mydatabase") Yukarıdaki kod hatasız çalıştırıldıysa, başarıyla bir veritabanı oluşturdunuz. Veritabanının mevcut olup olmadığını kontrol edin. "VERİTABANLARINI GÖSTER" ifadesini kullanarak sisteminizdeki tüm veritabanlarını listeleyerek bir veritabanı olup olmadığını kontrol edebilirsiniz: Misal Sisteminizin veritabanlarının bir listesini döndürün: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi") imlecim = mydb.cursor () mycursor.execute ("VERİTABANLARINI GÖSTER") imlecimdeki x için: Baskı (x) Veya bağlantıyı yaparken veritabanına erişmeyi deneyebilirsiniz: Misal "Mydatabase" veritabanına bağlanmayı deneyin: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") Veritabanı yoksa, bir hata alırsınız. Python MySQL Tablo Oluşturma Tablo Oluşturma MySQL'de bir tablo oluşturmak için "CREATE TABLE" ifadesini kullanın. Bağlantıyı oluştururken veritabanının adını tanımladığınızdan emin olun. Misal "Müşteriler" adlı bir tablo oluşturun: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () mycursor.execute ("CREATE TABLE müşterileri (isim VARCHAR (255), adres VARCHAR (255))") Yukarıdaki kod hatasız çalıştırıldıysa, şimdi başarıyla bir tablo oluşturmuş olursunuz. Tablonun var olup olmadığını kontrol edin. Veritabanınızdaki tüm tabloları "SHOW TABLES" ifadesiyle listeleyerek bir tablonun var olup olmadığını kontrol edebilirsiniz: Misal Sisteminizin veritabanlarının bir listesini döndürün: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () mycursor.execute ("TABLOLARI GÖSTER") imlecimdeki x için: Baskı (x) Birincil Anahtar Bir tablo oluştururken, her kayıt için benzersiz bir anahtara sahip bir sütun da oluşturmalısınız. Bu bir İLK ANAHTAR tanımlanarak yapılabilir. Her kayıt için benzersiz bir sayı ekleyecek olan "INT AUTO_INCREMENT PRIMARY KEY" ifadesini kullanıyoruz. 1'den başlayarak her kayıt için birer birer artırıldı. Misal Tabloyu oluştururken birincil anahtar oluşturun: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () mycursor.execute ("CREATE TABLE müşterileri (id INT AUTO_INCREMENT PRIMARY KEY, ad VARCHAR (255), adres VARCHAR (255))") Tablo zaten mevcutsa, ALTER TABLE anahtar sözcüğünü kullanın: Misal Mevcut bir tabloda birincil anahtar oluşturun: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () mycursor.execute ("ALTER TABLE müşterileri SÜTUN KİMLİĞİ EKLE INT AUTO_INCREMENT BİRİNCİL ANAHTAR") Python MySQL Tabloya Ekleme Tabloya Ekleme MySQL içinde bir tablo doldurmak için "INSERT INTO" deyimini kullanın. Misal "Müşteriler" tablosuna bir kayıt ekleyin: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () sql = "Müşterilere INSERT (ad, adres) DEĞERLERİ (% s,% s)" val = ("John", "Otoyol 21") mycursor.execute (sql, val) mydb.commit () print (mycursor.rowcount, "kayıt eklendi.") Önemli : Şu ifadeye dikkat etmeniz gerekir: mydb.commit. Değişikliklerin yapılması zorunludur, aksi takdirde tabloda herhangi bir değişiklik yapılmaz. Birden Çok Satır Ekle Bir tabloya birden çok satır eklemek için executemany () yöntemini kullanın. Execemany () yönteminin ikinci parametresi, eklemek istediğiniz verileri içeren bir tuple listesidir: Misal "Müşteriler" tablosunu verilerle doldurun: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () sql = "Müşterilere INSERT (ad, adres) DEĞERLERİ (% s,% s)" val = [ ('Peter', 'Lowstreet 4'), ('Amy', 'Apple st 652'), ('Hannah', 'Dağ 21'), ('Michael', 'Valley 345'), ('Sandy', 'Ocean blvd 2'), ('Betty', 'Yeşil Çim 1'), ('Richard', 'Sky st 331'), ('Susan', 'Tek yön 98'), ('Vicky', 'Sarı Bahçe 2'), ('Ben', 'Park Lane 38'), ('William', 'Central st 954'), ('Chuck', 'Ana Yol 989'), ('Viola', 'Yandan 1633')] mycursor.executemany (sql, val) mydb.commit () print (mycursor.rowcount, "eklendi.") sonucunu alırsınız. Eklenen Kimliği Alma İmleç nesnesine sorarak eklediğiniz satırın kimliğini alabilirsiniz. Not: Birden fazla satır eklerseniz, son eklenen satırın kimliği döndürülür. Misal Bir satır ekleyin ve kimliği döndürün: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () sql = "INSERT INTO müşteri (ad, adres) DEĞERLER (% s,% s)" val = ("Michelle", "Mavi Köy") mycursor.execute (sql, val) mydb.commit () print ("1 kayıt eklendi, ID:", mycursor.lastrowid) Python MySQL Seçim Yapma Tablodan Seçme MySQL'deki bir tablodan seçim yapmak için "SELECT" ifadesini kullanın: Misal "Müşteriler" tablosundan tüm kayıtları seçin ve sonucu görüntüleyin: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () mycursor.execute ("SEÇ * MÜŞTERİLERDEN") myresult = imlecim.fetchall () myresult içindeki x için: Baskı (x) Not: Son çalıştırılan ifadeden tüm satırları getiren fetchall () yöntemini kullanıyoruz. Sütunları Seçme Bir tablodaki sütunlardan yalnızca bazılarını seçmek için, "SELECT" ifadesini ve ardından sütun adlarını kullanın: Misal Yalnızca ad ve adres sütunlarını seçin: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () mycursor.execute ("SEÇİN ad, müşterilerden adres") myresult = imlecim.fetchall () myresult içindeki x için: Baskı (x) Fetchone () Yöntemini Kullanma Yalnızca bir satırla ilgileniyorsanız, fetchone () yöntemini kullanabilirsiniz. Fetchone () yöntemi, sonucun ilk satırını döndürür: Misal Yalnızca bir satırı getir: mysql.connector'ı içe aktar mydb = mysql.connector.connect ( host = "localhost", user = "kullaniciadiniz", şifre = "Þifrenizi", veritabanı = "mydatabase") imlecim = mydb.cursor () mycursor.execute ("SEÇ * MÜŞTERİLERDEN") myresult = imlecim.fetchone () Baskı (myresult) Ödevcim Online, Python, Python örnekleri, Python ödev yaptırma, Python MySQL, Python danışmanlık, Python MySQL Tablo, Python proje yaptırma, Python tez yaptırma aramalarınızın sonucu olarak burada. Tüm bölümlerde Python danışmanlık, Python yardım talepleriniz için akademikodevcim@gmail.com mail adresinden bize ulaşabilir veya sayfanın en altındaki formu doldurup size ulaşmamızı bekleyebilirsiniz.

Python MySQL (1) – Python MySQL Veritabanı Oluşturma – Python MySQL Tablo Oluşturma ve Tabloya Ekleme – Python MySQL Seçim Yapma – NumPy Set İşlemleri – PYTHON NUMPY DANIŞMANLIK

  Ödevcim Online, Python, Python örnekleri, Python ödev yaptırma, Python MySQL, Python danışmanlık, Python MySQL Tablo, Python proje yaptırma, Python tez yaptırma aramalarınızın sonucu olarak burada. Tüm bölümlerde Python danışmanlık,…

Okumaya devam edinPython MySQL (1) – Python MySQL Veritabanı Oluşturma – Python MySQL Tablo Oluşturma ve Tabloya Ekleme – Python MySQL Seçim Yapma – NumPy Set İşlemleri – PYTHON NUMPY DANIŞMANLIK