简体   繁体   中英

How to create table dynamically in python mysql.connector?

I got an error in the 5th line in my code below at '"+uname+"' .

How can I create a table at runtime?

Here is my code:

name = en1.get()
uname = en2.get()
password = en3.get()


sql = "insert into register values ('" + name + "','" + uname + "','" + password + "')"
CreateTable = "CREATE TABLE '"+uname+"'(no INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255),amount INT,date DATE,mode VARCHAR(255))"
try:
    cur.execute(sql)
    cur1.execute(CreateTable)
    con.commit()
    con1.commit()
    messagebox.showinfo("Success", "Your data is registered successfully!")
except:
    messagebox.showinfo("Error inserting", "Please change your username and try.")

In the statements with get(), if you get None as a return value then the below statements will fail name = en1.get() #-- None

sql = "insert into register values ('" + name + "','" + uname + "','" + password + "')"
CreateTable = "CREATE TABLE '"+uname+"'(no INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255),amount INT,date DATE,mode VARCHAR(255))"

Try this instead so that if any of the values is None, then below output will be obtained without causing the error but still the sql query needs to be handled

sql = "insert into register values ('{}','{}','{}')".format(name, uname, password)
CreateTable = "CREATE TABLE '{}'(no INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255),amount INT,date DATE,mode VARCHAR(255))".format(name)
print("sql is ", sql)
print("sql is ", CreateTable)

# Output 
sql is  insert into register values ('None','None','None')
sql is  CREATE TABLE 'None'(no INT AUTO_INCREMENT PRIMARY KEY,title VAR
CHAR(255),amount INT,date DATE,mode VARCHAR(255))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM