Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
308 views
in Technique[技术] by (71.8m points)

pymssql - Python 3 failed to check whether the database exists and create it

I'm a python beginner. I want to use Python 3 to check the test2 database on the SQL server. If it doesn't exist, I will create it. However, I find that an error is reported and I don't know what to do?

python code:

import pymssql 
 
 
def conn():
    ret = pymssql.connect(host='DESKTOP-4CDQOMR', user = 'sa', password = '123456') 
    if ret:
        print("connect successfully!")
    else:
        print("connect failed!")

    return ret
        

 
 
if __name__ == '__main__':
    conn = conn()  
    if conn:
        cursor = conn.cursor()
        sql = "if not exist (select * from sys.databases where name = 'test2')"
        conn.autocommit(True)
        cursor.execute(sql)
        conn.autocommit(False) 
        conn.close()

error information:

---------------------------------------------------------------------------
MSSQLDatabaseException                    Traceback (most recent call last)
srcpymssql.pyx in pymssql.Cursor.execute()

src\_mssql.pyx in _mssql.MSSQLConnection.execute_query()

src\_mssql.pyx in _mssql.MSSQLConnection.execute_query()

src\_mssql.pyx in _mssql.MSSQLConnection.format_and_run_query()

src\_mssql.pyx in _mssql.check_cancel_and_raise()

src\_mssql.pyx in _mssql.maybe_raise_MSSQLDatabaseException()

MSSQLDatabaseException: (156, b"Incorrect syntax near the keyword 'select'.DB-Lib error message 20018, severity 15:
General SQL Server error: Check messages from the SQL Server
DB-Lib error message 20018, severity 15:
General SQL Server error: Check messages from the SQL Server
")

During handling of the above exception, another exception occurred:

OperationalError                          Traceback (most recent call last)
F:jupyterconnect.py in <module>
     20         sql = "if not exist (select * from sys.databases where name = 'test2')"
     21         conn.autocommit(True)
---> 22         cursor.execute(sql)
     23         conn.autocommit(False)
     24         conn.close()

srcpymssql.pyx in pymssql.Cursor.execute()

OperationalError: (156, b"Incorrect syntax near the keyword 'select'.DB-Lib error message 20018, severity 15:
General SQL Server error: Check messages from the SQL Server
DB-Lib error message 20018, severity 15:
General SQL Server error: Check messages from the SQL Server
")
question from:https://stackoverflow.com/questions/65870972/python-3-failed-to-check-whether-the-database-exists-and-create-it

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I have solved my question by modifying the follow code :

sql = "if not exist (select * from sys.databases where name = 'test2')"

to

sql = "if not exists (select * from sys.databases where name = 'test2') begin create database test2 end"

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...