как вставить большой список в таблицу sqlite с помощью sqlalchemy - PullRequest
0 голосов
/ 28 мая 2020

я не очень хорошо понимаю flask_sqlalchemy, но насколько я понимаю, если у меня есть фрейм данных pandas (130 столбцов, 1 строка), и я хочу вставить его в базу данных sqlite, я должен сначала создать класс " Mytable "например,

class Mytable(db.Model):
      __tablename__ = 'mytable'
      id = db.Column(db.Integer, primary_key=True)
      val0 = db.Column(db.String(64), unique=True)
      val1 = db.Column(db.String(64))
      .
      .
      .
      va129 = db.Column(db.String(64))
      def __repr__(self):
             return '<Mytable %r>' % self.name

для таблицы, со столбцами, совпадающими между pandas и таблицей sqlite db, затем используйте что-то вроде

mytable = Mytable(col1=pandas[0],col1=pandas[1],......)
db.session.add(mytable)
db.session.commit()

, чтобы вставить его в базе данных, это правда? есть ли менее болезненный способ создать класс таблицы из 130 столбцов? есть ли у вас какой-нибудь совет, чтобы не писать все 130 строк из класса Mytable и строки mytable?

1 Ответ

0 голосов
/ 28 мая 2020

Я решил с помощью этого метода, если encode_pd - это строка для вставки в Mytable, мы можем использовать

row_to_write = list(encode_pd.loc[0])
row_value_markers = ','.join(['?']*len(row_to_write))
engine.execute("INSERT INTO Encodes VALUES (%s)"%row_value_markers, row_to_write)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...