Ядро SQLAlchemy - Как получить доступ к существующей базе данных Postgresql? - PullRequest
0 голосов
/ 09 января 2019

Я создал следующий класс Это, кажется, дает мне доступ к схеме таблицы, но не к самой таблице. Большинство примеров, которые я вижу, включая приведенный в руководстве, соответствуют коду, который использовался для создания таблиц

class DataBase:
    def __init__(self,user, password, db, host='localhost', port=5432):
        '''Initializes the connection and a metadata objects'''
        # We connect with the help of the PostgreSQL URL
        # postgresql://federer:grandestslam@localhost:5432/tennis
        url = 'postgresql://{}:{}@{}:{}/{}'
        url = url.format(user, password, host, port, db)

        # The return value of create_engine() is our connection object
        self.engine = sqlalchemy.create_engine(url, client_encoding='utf8', echo=False)  #echo=True enable logging (This is Python loggin module)
        self.conn=self.engine.connect()
        # We then bind the connection to MetaData()
        self.meta = sqlalchemy.MetaData(bind=self.con, reflect=True)

А потом я использую

if __name__ == '__main__':
    db=DataBase('nme','nme','nme')   
    db.meta.tables['tablename'] 

Но это дает мне доступ к схеме таблицы Я хочу вставить запись в эту таблицу после того, как таблица была создана

Редактировать: это сработало, спасибо

known_devices=Table('known_devices',self.meta,autoload=True)

        ins=known_devices.insert().values(
                      ....        
            )

        result=self.conn.execute(ins)

1 Ответ

0 голосов
/ 09 января 2019

Глядя на https://docs.sqlalchemy.org/en/latest/core/reflection.html и https://docs.sqlalchemy.org/en/latest/core/dml.html#sqlalchemy.sql.expression.Insert.values

это должно быть что-то вроде

yourtable=Table('tablename', meta, autoload=True)
conn.execute(yourtable.insert(), field="content")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...