#YashanDB Python驱动使用介绍

# 连接数据库

通过python-yasdb模块提供的connect函数建立数据库连接,并返回一个连接对象(Connection)。

可使用方法如下:

# 使用dsn、user、password参数
conn = yasdb.connect(dsn=self.getDsn(), user=self.user, password=self.pwd)
# 使用dsn参数
conn = yasdb.connect(self.user+"/"+self.pwd+"@"+self.getDsn())
# 使用dsn、password参数
conn = yasdb.connect(self.user+"@"+self.getDsn(), password=self.pwd)
# 使用host、port、user、password参数
conn = yasdb.connect(host=self.host, port=self.port, user=self.user, password=self.pwd)

# 可选参数

参数 描述
dsn 数据源名称(data source name),格式为:"user/password@host:port"或"user@host:port"或"host:port",可包含数据库用户名、密码、IP地址、端口号等信息,选填项。
user 数据库用户名,选填项。
password 数据库用户密码,选填项。
host 数据库IP地址,选填项。
port 数据库端口号,默认为1688,选填项。

如果user和password中有特殊字符/、@、\,需要使用符号\进行转义,举例如下:

dsn user password host port
127.0.0.1:1688 未指定 未指定 127.0.0.1 1688
sys@127.0.0.1:1688 sys 未指定 127.0.0.1 1688
sys/yasdb_123@127.0.0.1:1688 sys yasdb_123 127.0.0.1 1688
sys/yasdb\@_123@127.0.0.1:1688 sys yasdb@_123 127.0.0.1 1688
sys\//yasdb\@_123@127.0.0.1:1688 sys/ yasdb@_123 127.0.0.1 1688
s\/ys\@\\/yasdb\@_123@127.0.0.1:1688 s/ys@\ yasdb@_123 127.0.0.1 1688

# 执行SQL

调用Connection的cursor()方法创建并返回一个游标对象(Cursor),该游标对象可用于执行语句和获取结果。

cursor =connection.cursor()

# 执行SQL语句

调用Cursor的execute()方法执行SQL语句,并通过commit()方法将挂起的事务提交到数据库。

cursor.execute("drop table if exists example_table")
cursor.execute("create table example_table(id int , num int)")
cursor.execute("insert into example_table values(1,'test1')")
connection.commit()

# 执行带参数的SQL语句

cursor.execute("insert into example_table values(?,?)",(2,'test2'))
data=(3,'test3')
cursor.execute("insert into example_table values(?,?)",data)
connection.commit()

# 关闭游标对象

调用Cursor的close()方法后,该游标将不再可用。

cursor.close()

# 关闭数据库连接

调用Connection的close()方法后,该连接将不再可用。

connection.close()

# 示例

import yasdb
# 连接数据库
connection=yasdb.connect(
	dsn='127.0.0.1:1688',
	user='sales',
	password='sales',
)
# 创建游标对象
cursor =connection.cursor()
# 执行SQL语句
cursor.execute("drop table if exists example_table")
cursor.execute("create table example_table(id int , name varchar(32))")
cursor.execute("insert into example_table values(1,'test1')")
connection.commit()
cursor.execute("insert into example_table values(?,?)",(2,'test2'))
data=(3,'test3')
cursor.execute("insert into example_table values(?,?)",data)
connection.commit()
# 关闭游标对象
cursor.close()
# 关闭数据库连接
connection.close()