Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL是否可以创建表(如果存在)并返回0或1 Python_Python_Mysql - Fatal编程技术网

MYSQL是否可以创建表(如果存在)并返回0或1 Python

MYSQL是否可以创建表(如果存在)并返回0或1 Python,python,mysql,Python,Mysql,我使用Python读取MySQL数据库是否包含特定的表 我目前有以下代码: cur.execute("SHOW TABLES LIKE hello123") table_found = cur.fetchone() if table_found: # if table is found immediately start cupdate current operation do_task() else: sql_create = "CREATE TA

我使用Python读取MySQL数据库是否包含特定的表

我目前有以下代码:

cur.execute("SHOW TABLES LIKE hello123")
table_found = cur.fetchone()
if table_found: # if table is found immediately start cupdate current operation
    do_task()
else:
    sql_create = "CREATE TABLE IF NOT EXISTS hello123 (Serial VARCHAR(30), Quantity INT(11),ID INT(11) NULL, Status VARCHAR(30))"
    cur.execute(sql_create)
    try:
        data = pd.read_csv(file_name,header=0,sep=",")
        for col in data.itertuples():
            cur = conn.cursor()
            sql_insert = "INSERT INTO hello123 (Serial,Quantity,ID,Status) VALUES(%s, %s,%s,%s)"
            cur.execute(sql_insert, (col[1],col[2],col[3],"IDLE"))
        do_task()
        return
    except FileNotFoundError:
        print("file is not found in CSV file")
        return
我想知道是否有可能进一步简化这一点,而不是使用“SHOW TABLES like hello123”检查表是否存在,而是使用单个mysql查询
创建表(如果不存在)

我的想法是:

sql_create = "CREATE TABLE IF NOT EXISTS hello123 (Serial VARCHAR(30), Quantity INT(11),ID INT(11) NULL, Status VARCHAR(30))"
cur.execute(sql_create)
query_result = cur.fetchone()
if(query_result == FALSE):
# dont need to create table, do task immediately
do_task()
else:
# table created, insert values into table and do task
   try:
        data = pd.read_csv(file_name,header=0,sep=",")
        for col in data.itertuples():
           cur = conn.cursor()
           sql_insert = "INSERT INTO hello123 (Serial,Quantity,ID,Status) VALUES(%s, %s,%s,%s)"
           cur.execute(sql_insert, (col[1],col[2],col[3],"IDLE"))
   do_task()


有人能澄清一下,如果不存在,
CREATE TABLE IF NOT EXISTS
query,这样做是否可行吗?

真正的问题是如何只将数据插入到新表中?还是空桌子?因为
createtable IF NOT EXISTS
已经执行了它所说的操作。它不需要
SHOW
您可以使用
INSERT IGNORE
只插入不重复的行。创建表后,您可以检查表的
COUNT(*)
,并且仅在表为空时插入行。不要忘记考虑表可能存在,但其结构可能不同-您会发现表存在,但插入将失败。@PanagiotisKanavos Hello。当我使用SHOW table时,当找到该表时,我会立即启动任务,但是,如果我不使用SHOW table,而如果不存在该表,则只使用create table,如果该表已经存在,则仍然会插入我希望避免的重复数据。我的主要目标是减少查询的数量并使其尽可能高效。我已经尝试了您建议的INSERT IGNORE方法,但是,我认为它在我的情况下不起作用。表的内容可能会更改,但是,如果表存在,只要有内容,我仍然不想插入任何内容。仅当内容未更改时,“插入忽略”才起作用