Python Postgresql创建特定类型的表查询
我正在登记车号,我想把车号转移到数据库中。车号正确格式为ABC123 3个字母和3个数字。 我刚刚开始数据科学,或者我怎么能称之为sql科学。所以问题是我不知道如何用CARNUM数据类型创建表。 例如,下面是我用来创建表的代码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,
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中,您限制可以存储到列中的字符的最大长度,文本的字符大小不限,但在您的情况下,您在插入之前使用正则表达式进行约束。