简体   繁体   English

通过python将文件插入到ms sql server

[英]inserting a file to ms sql server through python

I am quite new to programming.我对编程很陌生。 I have written the following code by researching from StackOverflow and other sites.我通过从 StackOverflow 和其他站点进行研究编写了以下代码。 I am trying to upload a csv file to the MS SQL Server.我正在尝试将 csv 文件上传到 MS SQL Server。 Every time I run this it connects and then a message pops up 'Previous SQL was not a query'.每次我运行它时,它都会连接,然后弹出一条消息“以前的 SQL 不是查询”。 I am not sure how to actually tackle this.我不确定如何实际解决这个问题。 Any suggestions and help will be appreciated任何建议和帮助将不胜感激

import pyodbc import _csv

source_path= r'C:\Users\user\Documents\QA Canvas\module2\Module 2 Challenge\UFO_Merged.csv'

source_expand= open(source_path, 'r')

details= source_expand.readlines

print('Connecting...')
     try:
    conn = pyodbc.connect(r'DRIVER={ODBC Driver 13 for SQL Server};'r'SERVER=FAHIM\SQLEXPRESS;'r'DATABASE=Ash;'r'Trusted_Connection=yes')
    print('Connected')
    cur = conn.cursor()
    print('Cursor established')

    sqlquery ="""
                IF EXISTS
                   (
                    SELECT TABLE_NAME ,TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE  TABLE_NAME = 'UFO_MERGED' AND TABLE_SCHEMA = 'dbo')

                    BEGIN
                    DROP TABLE [dbo].[UFO_MERGED]
                    END

                    CREATE TABLE [dbo].[UFO_MERGED]
                    (      [ID] smallint
                          ,[COMMENTS] varchar(max)
                          ,[FIRST OCCURANCE] datetime
                          ,[CITY] varchar(60)
                          ,[COUNTRY] varchar(20)
                          ,[SHAPE] varchar(20)
                          ,[SPEED] smallint
                          ,[SECOND OCCURANCE] datetime
                    PRIMARY KEY(id)
                    ) ON [PRIMARY]

                             """
    result = cur.execute(sqlquery).fetchall()
    for row in result:
        print(row)
    print("{} rows returned".format(len(result)))

    sqlstr= """
              Insert into [dbo].[UFO_Merged] values  ('()','()','()','()','()','()','()','()')             

              """

    for row in details[1:]:
        row_data =row.split(',')
        sqlquery=sqlstr.format(row_data[0],row_data[1],row_data[2],row_data[3],row_data[4],row_data[5],row_data[6],row_data[7])
        result=cur.execute(sqlquery)

    conn.commit()    
    conn.close()


except Exception as inst:
    if inst.args[0]== '08001':
        print("Cannot connect to the server")
    elif inst.args[0] == '28000':
        print("Login failed - check connection string")
    else:
        print(inst)

Well, make sure the SQL works first, before you try to introduce other technologies (Python, R, C#, etc.) on top of it.好吧,在尝试在 SQL 之上引入其他技术(Python、R、C# 等)之前,请先确保 SQL 有效。 The SQL looks a little funky, but I'm not a SQL expert, so I can't say for sure, and I don't have time to recreate your setup on my machine. SQL 看起来有点奇怪,但我不是 SQL 专家,所以我不能肯定,而且我没有时间在我的机器上重新创建您的设置。 Maybe you can try with something a bit less complex, get that working, and then graduate to something more advanced.也许你可以尝试一些不太复杂的东西,让它发挥作用,然后再学习更高级的东西。 Does the following work for you?以下对您有用吗?

import pyodbc
user='sa'
password='PC#1234'
database='climate'
port='1433'
TDS_Version='8.0'
server='192.168.1.103'
driver='FreeTDS'

   con_string='UID=%s;PWD=%s;DATABASE=%s;PORT=%s;TDS=%s;SERVER=%s;driver=%s' % (user,password, database,port,TDS_Version,server,driver)
   cnxn=pyodbc.connect(con_string)
   cursor=cnxn.cursor()
   cursor.execute("INSERT INTO mytable(name,address) VALUES (?,?)",('thavasi','mumbai'))
   cnxn.commit() 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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