2017-04-03 4 views
0

Ich versuche, eine String-basierte Sequenz in SQLAlchemy ORM zu erstellen. Ich weiß, dass es am besten ist, eine Integer-basierte Spalte zu verwenden, um die ID einer Tabelle zu verwalten, aber in meinem Fall muss ich die Daten aufgrund einiger Anforderungen des Projekts als String-basierte PK für IDs speichern.Erstellen Sie eine String-basierte Sequenz in Python SQL Alchemy

Ich weiß, dass in einigen Datenbanken ist es möglich, Daten zu speichern, eine Zeichenfolge basierend Sequenz wie:

  • "AAA1"
  • "AAA2"
  • "aaan"

Aber in SQL-Alchemie kann ich das nicht erreichen, indem ich Sequence Methode verwende. Es erzeugt nur Integer-basierte Sequenzen und ich kann keine Optionen finden, um ein Präfix in der Sequenzgenerierung anzuhängen.

Es gibt eine einfache Lösung, um dies zu erreichen?

Antwort

0

Sie können dies ähnlich wie dies in PostgreSQL tun:

CREATE TABLE test(
    id text PRIMARY KEY, 
    val text 
); 

CREATE SEQUENCE test_id_seq OWNED BY test.id; 

ALTER TABLE test 
    ALTER id SET DEFAULT to_hex(nextval('test_id_seq')); 

In diesem Beispiel habe ich die to_hex Funktion verwendet, um die hexadezimale Darstellung zu bekommen, aber Sie einen beliebigen Ausdruck verwenden können, die Sie mögen.