Sup*_*ero 29 python postgresql psycopg2 insert
我正在使用以下内容尝试将记录插入到postgresql数据库表中,但它无法正常工作.我没有收到任何错误,但表中没有记录.我需要提交还是其他什么?我正在使用随Bitnami djangostack安装一起安装的postgresql数据库.
import psycopg2
try:
conn = psycopg2.connect("dbname='djangostack' user='bitnami' host='localhost' password='password'")
except:
print "Cannot connect to db"
cur = conn.cursor()
try:
cur.execute("""insert into cnet values ('r', 's', 'e', 'c', 'w', 's', 'i', 'd', 't')""")
except:
print "Cannot insert"
Run Code Online (Sandbox Code Playgroud)
ari*_*ght 57
如果不想将每个条目提交到数据库,可以添加以下行:
conn.autocommit = True
Run Code Online (Sandbox Code Playgroud)
所以你得到的代码将是:
import psycopg2
try:
conn = psycopg2.connect("dbname='djangostack' user='bitnami' host='localhost' password='password'")
conn.autocommit = True
except:
print "Cannot connect to db"
cur = conn.cursor()
try:
cur.execute("""insert into cnet values ('r', 's', 'e', 'c', 'w', 's', 'i', 'd', 't')""")
except:
print "Cannot insert"
Run Code Online (Sandbox Code Playgroud)
Eug*_*ash 11
psycopg2
是符合Python DB API的,因此默认情况下自动提交功能处于关闭状态.您需要调用conn.commit
以将任何挂起的事务提交到数据库.由于连接(和游标)是上下文管理器,您只需使用该with
语句在离开上下文时自动提交/回滚事务:
with conn, conn.cursor() as cur: # start a transaction and create a cursor
cur.execute(sql)
Run Code Online (Sandbox Code Playgroud)
来自文档:
当连接退出
with
块时,如果块没有引发异常,则提交事务.如果发生异常,则回滚事务.当光标退出
with
块时,它将关闭,释放最终与之关联的任何资源.交易状态不受影响.
小智 6
import psycopg2
conn = psycopg2.connect("dbname='djangostack' user='bitnami'
host='localhost' password='password'")
con.set_session(autocommit=True)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30193 次 |
最近记录: |