Hallo zusammen,
hat sich jemand von Euch schon Mal mit dem flask appbuilder beschäftigt? Siehe Link: https://flask-appbuilder.readthedocs.io ... intro.html
Ich möchte gerne eine schöne Datenbank in Python natürlich. Soweit funktioniert auch das meiste, wie ich mir das so vorstelle. Brauche aber Hilfe. Ich hätte gerne eine Funktion mit der ich Datensätze duplizieren kann und ausgewählte Daten möchte ich auch ganz gern als CSV. Datei exportieren.
Viele liebe Grüße
flask appbuilder
- noisefloor
- User
- Beiträge: 4151
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Welche Datenbank benutzt du? Und eine Exportfunktion Datensätze -> CSV kann man sich eigentlich auch mit relativ wenig Code selber schreiben.
Gruß, noisefloor
Du meinst ein webbasiertes Frontend für deine DB, oder?Ich möchte gerne eine schöne Datenbank in Python natürlich.
Das will man normalerweise gerade _nicht_, zumindest bei einer relationalen Datenbank.ch hätte gerne eine Funktion mit der ich Datensätze duplizieren kann
Welche Datenbank benutzt du? Und eine Exportfunktion Datensätze -> CSV kann man sich eigentlich auch mit relativ wenig Code selber schreiben.
Gruß, noisefloor
Hallo noisefloor,
Ja eine Frontend. Ich habe mich für die SQLAlchemy Variante entschieden. Das mit dem Duplizieren so denk ich, macht es dem Endnutzer leichter, bestehende Datensätze zu ändern und diese als neue abzuspeichern.
Die exportierte CSV Datei wird dann später weiterverarbeitet. Ich habe das auch schon ein Script, weiß nur leider nicht, wie ich es im flask appbuilder am besten mit einpflegen kann.
Viele Grüße
Ja eine Frontend. Ich habe mich für die SQLAlchemy Variante entschieden. Das mit dem Duplizieren so denk ich, macht es dem Endnutzer leichter, bestehende Datensätze zu ändern und diese als neue abzuspeichern.
Die exportierte CSV Datei wird dann später weiterverarbeitet. Ich habe das auch schon ein Script, weiß nur leider nicht, wie ich es im flask appbuilder am besten mit einpflegen kann.
Viele Grüße
- noisefloor
- User
- Beiträge: 4151
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Wenn es "nur" im das Frontend für die DB geht: warum nimmst du nicht was bestehendes wie PHPMyAdmin für MYSQL / Maria DB oder pgAdmin für PostgreSQL oder SQLite Browser für SQLite?
Flask Appbuilder ist ja kein dediziertes Frontend für die DB.
Gruß, noisefloor
Heißt was genau? Also was meinst du mit Variante? SQLAlchemy ist ja "nur" eine Zwischenschicht und ORM, die sich zwischen Python und eine relationale Datenbank legt.Ich habe mich für die SQLAlchemy Variante entschieden.
Wenn es "nur" im das Frontend für die DB geht: warum nimmst du nicht was bestehendes wie PHPMyAdmin für MYSQL / Maria DB oder pgAdmin für PostgreSQL oder SQLite Browser für SQLite?
Flask Appbuilder ist ja kein dediziertes Frontend für die DB.
Gruß, noisefloor
Hallo,
sorry, das ich so undeutlich bin. Es ist eine Sqlite Datenbank.
Also zurück zum Thema.
Wie kann ich da einen zusätzlichen Button hinzufügen, mit dem ich Datensätze duplizieren kann?
Muss ich das in der vorgegebenen base_list.html Vorlage ändern/hinzufügen?
Vielen Dank für deine Hilfe
sorry, das ich so undeutlich bin. Es ist eine Sqlite Datenbank.
Code: Alles auswählen
# The SQLAlchemy connection string.
SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.join(basedir, "app.db")
# SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
# SQLALCHEMY_DATABASE_URI = 'postgresql://root:password@localhost/myapp'

Wie kann ich da einen zusätzlichen Button hinzufügen, mit dem ich Datensätze duplizieren kann?
Muss ich das in der vorgegebenen base_list.html Vorlage ändern/hinzufügen?
Code: Alles auswählen
{% import 'appbuilder/general/lib.html' as lib %}
{% set can_add = "can_add" | is_item_visible(modelview_name) %}
{% set can_show = "can_show" | is_item_visible(modelview_name) %}
{% set can_edit = "can_edit" | is_item_visible(modelview_name) %}
{% set can_delete = "can_delete" | is_item_visible(modelview_name) %}
{% set actions = actions | get_actions_on_list(modelview_name) %}
<div class="well well-sm">
{% block list_header scoped %}
{{ lib.render_list_header(can_add, page, page_size, count, filters, actions, modelview_name) }}
{% endblock %}
</div>
{% if count > 0 %}
{% block begin_content scoped %}
{% endblock %}
{% block begin_loop_header scoped %}
{% endblock %}
{% block begin_loop_values %}
{% endblock %}
{% block end_content scoped %}
{% endblock %}
{{ lib.action_form(actions, modelview_name) }}
<script language="javascript">
$(document).ready(function() {
window.modelActions = new AdminActions();
});
</script>
{% else %}
<b>{{_("No records found")}}</b>
{% endif %}
Nach langem raumprobieren hier endlich die Lösung.

Code: Alles auswählen
@action("clone", "Duplizieren", "Duplizieren?", "far fa-copy", single=False)
def duplicate_object(self,items):
if isinstance(items, list):
urltools.get_filter_args(self._filters)
order_column, order_direction = self.base_order
count, lst = self.datamodel.query(self._filters, order_column, order_direction)
for item in self.datamodel.get_values(items, self.list_columns):
db.session.add(Primer(name=item['name'], gene=item['gene'],sequence=item['sequence'],contact=item['contact'],description=item['description'],restriction_site=item['restriction_site'], tm=item['tm'],position_from_ATG=item['position_from_ATG']))
db.session.commit()
self.update_redirect()
else:
pass
#db.session.add(Primer())
#db.session.commit()
return redirect(self.get_redirect())