Django ve SQLAlchemy birlikte kullanılabilir mi?

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:

dialect+driver://username:password@host:port/database

ama ben ODBC driver tanımlarken bayağı tırmalamıştım. onu da aşağıdaki gibi sonuna ekleyebilirsiniz:

connection_string= f"mssql+pyodbc://{usr}:{pwd}@{server}/{db}?driver=ODBC Driver 17 for SQL Server"

Bundan sonra engine oluşturup onun üzerinden bağlanarak sorgulama yapabilirsiniz.

1 Beğeni

teşekkürler.

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ü.

1 Beğeni