backend | /usr/local/lib/python3.8/site-packages/pandas/io/sql.py:762: UserWarning: pandas only support SQLAlchemy connectable(engine/connection) ordatabase string URI or sqlite3 DBAPI2 connectionother DBAPI2 objects are not tested, please consider using SQLAlchemy
django da harici veritabanı mssql e bağlanıp veri çekiyorum. Veri beklediğim şekilde geliyor. ancak yukarıdaki uyarıyı alıyorum. SQLAlchemy ile ilgili tek bilgim django orm’nin flask versiyonu olduğu yönünde. ne yapmalıyım tavsiyesi olan var mıdır?
class Datum(models.Model):
title = models.CharField(max_length=56)
connector = models.ForeignKey(ExternalDbConnector, on_delete=models.CASCADE)
query = models.ForeignKey(Query, on_delete=models.CASCADE)
@property
def data(self):
with self.connector.connector() as conn:
sql = self.query.text
return pd.read_sql(sql, conn)
self.query.text > sql sorgusu string self.connector.connector() > şöyle bir şey
def connector(self):
return pyodbc.connect(DRIVER={ODBC Driver 17 for SQL Server};SERVER=0.0.0.000;DATABASE=**;UID=**;PWD=**;)
Bu pek doğru değil. flask-sqlalchemy için bu ifade daha doğru olabilir.
Konuya gelecek olursak Pandas ile herhangi bir bağlanıcı kütüphane ile (pyodbc, cx_Oracle, psycopg2) üzerinden sorgu yürütüp dönen tabloyu dataframe içerisine alabiliyorsunuz, ama bu connector Sqlalchemy değilse Pandas yukarıdaki uyarıyı veriyor. Oracle ve Mssql üzerinde hâlâ kullanıp aynı uyarıyı alıyorum ama uyarı haricinde şimdiye değin ben bir sıkıntısını görmedim. Uyarıyı da görmeyeyim derseniz:
kısmını sqlalchemy ile de yazabilirsiniz. Çünkü SqlAlchemy de veri tabanlarına bağlanmak için driver olarak bu kütüphaneleri kullanıyor. Genel yapı şu şekilde:
diğer konulara odaklanacağım için şimdilik bu şekilde bırakacağım; ama SQLAlchemy ile engine üzerinden kullanmak olası farklı kütüphaneleri benzeştirmek açısından mantıklı göründü.