Python Postgresql创建特定类型的表查询

Python Postgresql创建特定类型的表查询,python,postgresql,Python,Postgresql,我正在登记车号,我想把车号转移到数据库中。车号正确格式为ABC123 3个字母和3个数字。 我刚刚开始数据科学,或者我怎么能称之为sql科学。所以问题是我不知道如何用CARNUM数据类型创建表。 例如,下面是我用来创建表的代码 create_table_query = '''CREATE TABLE Vartotojai (ID INT PRIMARY KEY NOT NULL, CARNUM TEXT NOT NULL,

我正在登记车号,我想把车号转移到数据库中。车号正确格式为ABC123 3个字母和3个数字。 我刚刚开始数据科学,或者我怎么能称之为sql科学。所以问题是我不知道如何用CARNUM数据类型创建表。 例如,下面是我用来创建表的代码

 create_table_query = '''CREATE TABLE Vartotojai
      (ID INT PRIMARY KEY     NOT NULL,
      CARNUM            TEXT    NOT NULL,
      TIME         TIME); '''

cursor.execute(create_table_query)
connection.commit()
print("Table created successfully in PostgreSQL ")
在这个CARNUM文本NOT NULL中,我使用文本,但我认为这不是我需要使用的3x字母和3x数字。我还需要使用NOTNULL吗?因为我是从用户输入中获取数字的,所以我使用它作为汽车号码的返回:

while True:
    car_numb = input("Input car number:")

    if car_numb_re.match(car_numb) and car_numb.isupper():
        # matches!
        print("Match")
        Registration = True
        TicketReg(car_numb)
        break
    elif car_numb.islower():
        print("Wrong number format. Should be (XXX123)")
        continue
python中汽车编号的格式如下所示

car_numb_re = re.compile(r'^[A-Z]{3}\d{3}$')

您还可以使用基本相同的正则表达式,将约束直接添加到表本身中。这样做的好处是,即使你的应用程序以某种方式绕过了一个可能不太正确的修复程序,该规则仍将被强制执行

create_table_query = '''CREATE TABLE Vartotojai
      (ID INT PRIMARY KEY     NOT NULL,
      CARNUM            TEXT    NOT NULL,
      TIME         TIME, 
      constraint carnum_format_check check (carnum ~ '^[A-Z]{3}\d{3}$')
      ); ''';  

使用varchar6代替文本,也可以使用null,这取决于您的应用程序文本类型。varchar和文本之间的唯一区别在于,在varchar中,您限制可以存储到列中的字符的最大长度,文本的字符大小不限,但在您的情况下,您在插入之前使用正则表达式进行约束。