获取ValueError:参数的类型不受支持,我尝试了所有数据类型

2024-06-26 00:13:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将包含数字和字母的GST号码以及电子邮件id一起存储到数据库中,但它显示的是ValueError: parameters are of unsupported type。在这里,我只尝试了手机号码,它的工作非常完美,但不是在商品及服务税和电子邮件id的情况下

 import sqlite3


 import re


 def getphonenumber(s):

 phonenumberregex=re.findall(r'\+\d\d\d\d\d\d\d\d\d\d\d\d|\d\d\d\d+-\d\d\d\d\d\d\d|\d\d\d\d\d\d\d\d\d\d',line)

 if phonenumberregex:

  print(phonenumberregex)     

   return (phonenumberregex)

 def getemailid(s):

    emailidregex=re.findall(r'\S+@\S+',line)

  if emailidregex:

      print(emailidregex)

  return (emailidregex)



 def getgst(s):

 gstregex=re.findall(r'\d{2}[A-Z]{5}\d{4}[A-Z]{1}[A-Z\d]{1}[Z]{1}[A-Z\d]{1}',line)

 if gstregex:

    print(gstregex)  

 return (gstregex)



 with open('yesno.txt') as s:

    amountdata = s.readlines()

 for line in amountdata:

  if line.__contains__('Gst'):     

   c=getgst(s)

  if line.__contains__('Mob'):    

     a=getphonenumber(s)

  if line.__contains__('Email'): 

     b=getemailid(s) 

 s.close()  

 conn = sqlite3.connect('test3.db') 

 c = conn.cursor() 

 def create_table(): 

     c.execute('CREATE TABLE IF NOT EXISTS RecordTWO (gst STR)') 


 def data_entry(): 

     c.execute("INSERT INTO RecordTWO (GST) VALUES(?)",  (c))  


     conn.commit() 


 create_table() 

 data_entry() 


 def get_posts():

     with conn:

          c.execute("SELECT * FROM RecordTWO")

          print(c.fetchall())

 get_posts()

 print("Table created successfully")

我想在数据库中存储gst的值,其中包含字符和数字以及电子邮件id。另外,由于我是python新手,有人能告诉我如何以表格格式获得输出吗?你知道吗


Tags: reidexecutereturnif电子邮件defline
1条回答
网友
1楼 · 发布于 2024-06-26 00:13:02

你不会说哪一行抛出了异常,但我猜是这一行:

     c.execute("INSERT INTO RecordTWO (GST) VALUES(?)",  (c))  

你到底想把什么插入数据库?在继续阅读之前,请花一些时间仔细看一下这一行。看看你能不能弄明白。你知道吗

如果您想不通,您可以使用变量c中的游标来尝试将游标本身插入数据库。那不太可能做你想做的事。您可能已经使用c=getgst(s)为变量c赋值,但是在创建游标并将其赋值给c时,您重写了该值。你知道吗

您已经落入这个陷阱,因为您使用了单字母的名称为您的变量。别这样。返回并给出变量的abcs名称,以便更好地描述它们所持有的值。是的,输入要多一些,但是清晰的名字让你的代码更容易阅读。你知道吗

假设我们将cursor变量重命名为db_cursor。在下面的行中发现错误比在上面的行中容易多少?你知道吗

     db_cursor.execute("INSERT INTO RecordTWO (GST) VALUES(?)",  (db_cursor))  

你还得做一个改变。当您编写(c),或者在我上面的示例(db_cursor)时,似乎您正在尝试创建一个包含单个值的元组。execute方法的第二个参数需要是一个元组(这里也可以使用列表)。然而,(c)不是一个1元组,它只是一个括号中的表达式。要使其成为元组,请在)之前包含一个尾随逗号:

     db_cursor.execute("INSERT INTO RecordTWO (GST) VALUES(?)",  (db_cursor,))  

要获得表格格式的输出,请参阅此站点上的其他问题,例如Python format tabular output。你知道吗

相关问题 更多 >