我正在开发一个项目,我需要创建一个包含电话号码的表,我想通过在检查语句中使用正则表达式“^[0-9]{10}$”来检查所有字符是否都是数字,而创建表,但是当我输入任何电话号码(例如“0522233355”)时,我在包含正则表达式的检查语句中遇到错误,我附上了我的代码:
def create_table():
customers_table = """
create table if not exists Customers(
phone_number nvarchar(10) primary key,
first_name nvarchar(15),
last_name nvarchar(15),
city nvarchar(20),
address nvarchar(50),
backup_phone nvarchar(10),
password nvarchar(20),
check (length(phone_number) == 10),
check (phone_number not like backup_phone),
check (phone_number like '^[0-9]{10}$'),
check (length(password) >= 8 and length(password) <= 20),
check (password like '^.{8,20}$')
)
"""
products_table = """
create table if not exists Products(
id_number int auto_increment primary key,
name nvarchar(50),
img_path nvarchar(100),
price nvarchar(10),
description nvarchar(200),
publish_year nvarchar(20),
author_name nvarchar(20)
)
"""
with sqlite3.connect("Shopping.db") as connection:
cursor = connection.cursor()
try:
cursor.execute(customers_table)
cursor.execute(products_table)
connection.commit()
except Exception as e:
print(e)
connection.rollback()
我尝试使用“regexp”,但解释器无法识别它,而 sql 控制台可以轻松使用它。 我尝试过:检查(电话号码如“0522233355”),它起作用了。 我尝试过:检查(电话号码如'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0 -9][0-9]'),不起作用。 我尝试了不同的电话号码,但结果相同。 这就是我尝试过的。
以下是如何修改
LIKE
的用法
create table if not exists Customers(
phone_number nvarchar(10) primary key,
first_name nvarchar(15),
last_name nvarchar(15),
city nvarchar(20),
address nvarchar(50),
backup_phone nvarchar(10),
password nvarchar(20),
check (length(phone_number) == 10),
check (phone_number != backup_phone)
check (phone_number GLOB '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),
check (length(password) >= 8 and length(password) <= 20)
)