Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Database & SysAdmin
  3. Database
  4. Can't Insert data into Access Table from Python - Solved

Can't Insert data into Access Table from Python - Solved

Scheduled Pinned Locked Moved Database
sqlitepythondatabasehelpquestion
14 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Lost User

    The float built-in only takes a single parameter, you are passing two, so that code will fail. Also you have specified two values in your insert statement but you are trying to pass only one.Victor pointed out my mistake. [edit] Having looked at the documentation, I guess that the extra parentheses round your values may be the problem. The example is:

    cursor.execute("insert into products(id, name) values (?, ?)", 'pyodbc', 'awesome library')

    So perhaps your code should be:

    cur2.execute('INSERT INTO RawValues (Millitime, PowerCost) VALUES (?,?)', float(row[0]), row[1])

    [/edit]

    P Offline
    P Offline
    Peter R Fletcher
    wrote on last edited by
    #5

    Richard MacCutchan wrote:

    Having looked at the documentation, I guess that the extra parentheses round your values may be the problem. The example is:

    cursor.execute("insert into products(id, name) values (?, ?)", 'pyodbc', 'awesome library')

    So perhaps your code should be:

    cur2.execute('INSERT INTO RawValues (Millitime, PowerCost) VALUES (?,?)', float(row[0]), row[1])

    No, the 'extra' parentheses turn the two values to be passed into a single (2-element) Python Tuple, which is what the call wants passed. If this were the problem, Python should be throwing an error. I have written a fair bit of other code, adding data to SQLite tables, which is exactly parallel and works as it should.

    L 1 Reply Last reply
    0
    • P Peter R Fletcher

      Richard MacCutchan wrote:

      Having looked at the documentation, I guess that the extra parentheses round your values may be the problem. The example is:

      cursor.execute("insert into products(id, name) values (?, ?)", 'pyodbc', 'awesome library')

      So perhaps your code should be:

      cur2.execute('INSERT INTO RawValues (Millitime, PowerCost) VALUES (?,?)', float(row[0]), row[1])

      No, the 'extra' parentheses turn the two values to be passed into a single (2-element) Python Tuple, which is what the call wants passed. If this were the problem, Python should be throwing an error. I have written a fair bit of other code, adding data to SQLite tables, which is exactly parallel and works as it should.

      L Offline
      L Offline
      Lost User
      wrote on last edited by
      #6

      You will have to do some debugging as it is impossible to guess what is happening on your system. Does the execute command return a value, such as the number of rows inserted?

      P 1 Reply Last reply
      0
      • L Lost User

        You will have to do some debugging as it is impossible to guess what is happening on your system. Does the execute command return a value, such as the number of rows inserted?

        P Offline
        P Offline
        Peter R Fletcher
        wrote on last edited by
        #7

        It returns a cursor. Fetching the contents of that gets the following:

        pyodbc.ProgrammingError: No results. Previous SQL was not a query.

        That does make a certain amount of sense, given that nothing is happening :), but doesn't really help, particularly since the syntax I am using appears valid and works with Sqlite. I was hoping that someone else had run into and solved this specific problem, since I am out of ideas. [EDIT] Further research suggests that this 'error' is even less helpful, and may well be the normal result when executing something that is not a SELECT query. [/EDIT]

        L 2 Replies Last reply
        0
        • P Peter R Fletcher

          It returns a cursor. Fetching the contents of that gets the following:

          pyodbc.ProgrammingError: No results. Previous SQL was not a query.

          That does make a certain amount of sense, given that nothing is happening :), but doesn't really help, particularly since the syntax I am using appears valid and works with Sqlite. I was hoping that someone else had run into and solved this specific problem, since I am out of ideas. [EDIT] Further research suggests that this 'error' is even less helpful, and may well be the normal result when executing something that is not a SELECT query. [/EDIT]

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #8

          Sorry, I am out of ideas, and the documentation is not a lot of help. Although a number of similar questions suggest that it should return a row count.

          1 Reply Last reply
          0
          • P Peter R Fletcher

            It returns a cursor. Fetching the contents of that gets the following:

            pyodbc.ProgrammingError: No results. Previous SQL was not a query.

            That does make a certain amount of sense, given that nothing is happening :), but doesn't really help, particularly since the syntax I am using appears valid and works with Sqlite. I was hoping that someone else had run into and solved this specific problem, since I am out of ideas. [EDIT] Further research suggests that this 'error' is even less helpful, and may well be the normal result when executing something that is not a SELECT query. [/EDIT]

            L Offline
            L Offline
            Lost User
            wrote on last edited by
            #9

            I have been playing with pyodbc and have successfully added records to my pre-built access database. Unfortunately that does not give any clues as to why your code fails. [edit] Created a RawValues table and successfully added a record with 2 values. [/edit]

            P 1 Reply Last reply
            0
            • L Lost User

              I have been playing with pyodbc and have successfully added records to my pre-built access database. Unfortunately that does not give any clues as to why your code fails. [edit] Created a RawValues table and successfully added a record with 2 values. [/edit]

              P Offline
              P Offline
              Peter R Fletcher
              wrote on last edited by
              #10

              Can you post your working Python code, and what version/'bitness' of Access are you running?

              L 1 Reply Last reply
              0
              • P Peter R Fletcher

                Can you post your working Python code, and what version/'bitness' of Access are you running?

                L Offline
                L Offline
                Lost User
                wrote on last edited by
                #11

                No need, I just discovered I am blind (and maybe you are). The following calls are missing the parentheses that make them into function calls:

                conn2.commit
                conn2.close
                conn1.close

                should be:

                conn2.commit()
                conn2.close()
                conn1.close()

                P M 2 Replies Last reply
                0
                • L Lost User

                  No need, I just discovered I am blind (and maybe you are). The following calls are missing the parentheses that make them into function calls:

                  conn2.commit
                  conn2.close
                  conn1.close

                  should be:

                  conn2.commit()
                  conn2.close()
                  conn1.close()

                  P Offline
                  P Offline
                  Peter R Fletcher
                  wrote on last edited by
                  #12

                  Of course! Thanks!!

                  1 Reply Last reply
                  0
                  • L Lost User

                    No need, I just discovered I am blind (and maybe you are). The following calls are missing the parentheses that make them into function calls:

                    conn2.commit
                    conn2.close
                    conn1.close

                    should be:

                    conn2.commit()
                    conn2.close()
                    conn1.close()

                    M Offline
                    M Offline
                    Mycroft Holmes
                    wrote on last edited by
                    #13

                    :laugh: I see it happens to the best of us.

                    Never underestimate the power of human stupidity - RAH I'm old. I know stuff - JSOP

                    L 1 Reply Last reply
                    0
                    • M Mycroft Holmes

                      :laugh: I see it happens to the best of us.

                      Never underestimate the power of human stupidity - RAH I'm old. I know stuff - JSOP

                      L Offline
                      L Offline
                      Lost User
                      wrote on last edited by
                      #14

                      It happens to me embarrassingly too often. :-O

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups